[pgrouting-users] pgrouting Dijksta Travelling Salesman Problem (TSP) with OpenStreetmap

Hi everybody, I am new to this list and new to pgrouting.

I found the following TSP example http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap
and tried to reproduce the solution.

Unfortunately I always get an error message.
My DB is complaining about one of your functions.

I got my routing table from osm2po. The table has the following structure:

1;”id”;”integer”
2;”osm_id”;”bigint”
3;”osm_name”;”character varying”
4;”osm_meta”;”character varying”
5;”osm_source_id”;”bigint”
6;”osm_target_id”;”bigint”;
7;”clazz”;”integer”
8;”flags”;”integer”
9;”source”;”integer”
10;”target”;”integer”
11;”length”;”double precision”
12;”kmh”;”integer”
13;”cost”;”double precision”
14;”reverse_cost”;”double precision”
15;”x1″;”double precision”
16;”y1″;”double precision”
17;”x2″;”double precision”
18;”y2″;”double precision”
19;”geom_way”;”geometry(LineString,4326)”

  • I installed the functions as mentioned via SQL window in pgAdmin3 (copy&paste then excecute)
  • I create and populate the my_route table
  • When it comes to step 5 and I try

select id,lon,lat from pgr_tspDijkstraLen(’my_route’, 1260
) dj, my_route rt where dj.id2=rt.node;

my DB warns

ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 25 at assignment PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible arrays SQL Status:2202E
Detail:Arrays with differing element dimensions are not compatible for concatenation.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 25 at assignment PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

Do you have any idea what went wrong? I really really need your solutionget working. I would appreciate a lot.

Thanks for your help.

PS: this text is a copy of what I wrote on on the comment site of the blog where I found the solution.

BR
Carsten

Hi Carsten,

The functions at
   http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql
are not part of pgRouting.

You need to ask this question to Ivan the author of the original article.

You probably need to add some debug statements to get a better understanding of what the code is doing. For example in pgr_makeDijkstraMatrix before the statement:

ids := ids || array[r2.id1];

Add:

raise notice 'r2: %', r2;
raise notice 'r2.id1: %', r2.id1;
raise notice 'ids: %', ids;

This should show you the progression of how the array ids is getting built as it appears to be compaining about that in the error message.

Hope this helps,
   -Steve

On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

Hi everybody, I am new to this list and new to pgrouting.

I found the following TSP example
http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap
and tried to reproduce the solution.

Unfortunately I always get an error message.
My DB is complaining about one of your functions.

I got my routing table from osm2po. The table has the following structure:

1;”id”;”integer”
2;”osm_id”;”bigint”
3;”osm_name”;”character varying”
4;”osm_meta”;”character varying”
5;”osm_source_id”;”bigint”
6;”osm_target_id”;”bigint”;
7;”clazz”;”integer”
8;”flags”;”integer”
9;”source”;”integer”
10;”target”;”integer”
11;”length”;”double precision”
12;”kmh”;”integer”
13;”cost”;”double precision”
14;”reverse_cost”;”double precision”
15;”x1″;”double precision”
16;”y1″;”double precision”
17;”x2″;”double precision”
18;”y2″;”double precision”
19;”geom_way”;”geometry(LineString,4326)”

- I installed the functions as mentioned via SQL window in pgAdmin3
(copy&paste then excecute)
- I create and populate the my_route table
- When it comes to step 5 and I try

select id,lon,lat from pgr_tspDijkstraLen(’my_route’, 1260
) dj, my_route rt where dj.id2=rt.node;

my DB warns

ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 25 at
assignment PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible arrays SQL Status:2202E
Detail:Arrays with differing element dimensions are not compatible for
concatenation.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 25 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

Do you have any idea what went wrong? I really really need your
solutionget working. I would appreciate a lot.

Thanks for your help.

PS: this text is a copy of what I wrote on on the comment site of the
blog where I found the solution.

BR
Carsten

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

Hi Carsten,

The functions at
   http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql
are not part of pgRouting.

You need to ask this question to Ivan the author of the original article.

Sorry, Dose was the original author.

You probably need to add some debug statements to get a better
understanding of what the code is doing. For example in
pgr_makeDijkstraMatrix before the statement:

ids := ids || array[r2.id1];

You could try changing this line to:

ids := ids || r2.id1;

and see if that fixes the problem.

-Steve

Add:

raise notice 'r2: %', r2;
raise notice 'r2.id1: %', r2.id1;
raise notice 'ids: %', ids;

This should show you the progression of how the array ids is getting
built as it appears to be compaining about that in the error message.

Hope this helps,
   -Steve

On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

Hi everybody, I am new to this list and new to pgrouting.

I found the following TSP example
http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap

and tried to reproduce the solution.

Unfortunately I always get an error message.
My DB is complaining about one of your functions.

I got my routing table from osm2po. The table has the following
structure:

1;”id”;”integer”
2;”osm_id”;”bigint”
3;”osm_name”;”character varying”
4;”osm_meta”;”character varying”
5;”osm_source_id”;”bigint”
6;”osm_target_id”;”bigint”;
7;”clazz”;”integer”
8;”flags”;”integer”
9;”source”;”integer”
10;”target”;”integer”
11;”length”;”double precision”
12;”kmh”;”integer”
13;”cost”;”double precision”
14;”reverse_cost”;”double precision”
15;”x1″;”double precision”
16;”y1″;”double precision”
17;”x2″;”double precision”
18;”y2″;”double precision”
19;”geom_way”;”geometry(LineString,4326)”

- I installed the functions as mentioned via SQL window in pgAdmin3
(copy&paste then excecute)
- I create and populate the my_route table
- When it comes to step 5 and I try

select id,lon,lat from pgr_tspDijkstraLen(’my_route’, 1260
) dj, my_route rt where dj.id2=rt.node;

my DB warns

ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 25 at
assignment PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible arrays SQL Status:2202E
Detail:Arrays with differing element dimensions are not compatible for
concatenation.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 25 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

Do you have any idea what went wrong? I really really need your
solutionget working. I would appreciate a lot.

Thanks for your help.

PS: this text is a copy of what I wrote on on the comment site of the
blog where I found the solution.

BR
Carsten

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

Hi Steve,
thanks for your suggestion. I’ll try that later when back from office.
BR
Carsten

···

2014-02-20 15:41 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com>:

Hi Carsten,

The functions at
http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql
are not part of pgRouting.

You need to ask this question to Ivan the author of the original article.

You probably need to add some debug statements to get a better understanding of what the code is doing. For example in pgr_makeDijkstraMatrix before the statement:

ids := ids || array[r2.id1];

Add:

raise notice ‘r2: %’, r2;
raise notice ‘r2.id1: %’, r2.id1;
raise notice ‘ids: %’, ids;

This should show you the progression of how the array ids is getting built as it appears to be compaining about that in the error message.

Hope this helps,
-Steve

On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

Hi everybody, I am new to this list and new to pgrouting.

I found the following TSP example
http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap
and tried to reproduce the solution.

Unfortunately I always get an error message.
My DB is complaining about one of your functions.

I got my routing table from osm2po. The table has the following structure:

1;”id”;”integer”
2;”osm_id”;”bigint”
3;”osm_name”;”character varying”
4;”osm_meta”;”character varying”
5;”osm_source_id”;”bigint”
6;”osm_target_id”;”bigint”;
7;”clazz”;”integer”
8;”flags”;”integer”
9;”source”;”integer”
10;”target”;”integer”
11;”length”;”double precision”
12;”kmh”;”integer”
13;”cost”;”double precision”
14;”reverse_cost”;”double precision”
15;”x1″;”double precision”
16;”y1″;”double precision”
17;”x2″;”double precision”
18;”y2″;”double precision”
19;”geom_way”;”geometry(LineString,4326)”

  • I installed the functions as mentioned via SQL window in pgAdmin3
    (copy&paste then excecute)
  • I create and populate the my_route table
  • When it comes to step 5 and I try

select id,lon,lat from pgr_tspDijkstraLen(’my_route’, 1260
) dj, my_route rt where dj.id2=rt.node;

my DB warns

ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 25 at
assignment PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible arrays SQL Status:2202E
Detail:Arrays with differing element dimensions are not compatible for
concatenation.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 25 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

Do you have any idea what went wrong? I really really need your
solutionget working. I would appreciate a lot.

Thanks for your help.

PS: this text is a copy of what I wrote on on the comment site of the
blog where I found the solution.

BR
Carsten


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

Thanks Steve,

coming home and adding your lines it returns with an error:

NOTICE: r2: (34304,“{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.2260793903,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}”)
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: ids:
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 25 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

I tried to write to Dose but he didn’t reply yet.

Does anyone have a clue?

Thanks for you help

Carsten

···

2014-02-20 16:24 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com>:

On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

Hi Carsten,

The functions at
http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql
are not part of pgRouting.

You need to ask this question to Ivan the author of the original article.

Sorry, Dose was the original author.

You probably need to add some debug statements to get a better
understanding of what the code is doing. For example in
pgr_makeDijkstraMatrix before the statement:

ids := ids || array[r2.id1];

You could try changing this line to:

ids := ids || r2.id1;

and see if that fixes the problem.

-Steve

Add:

raise notice ‘r2: %’, r2;
raise notice ‘r2.id1: %’, r2.id1;
raise notice ‘ids: %’, ids;

This should show you the progression of how the array ids is getting
built as it appears to be compaining about that in the error message.

Hope this helps,
-Steve

On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

Hi everybody, I am new to this list and new to pgrouting.

I found the following TSP example
http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap

and tried to reproduce the solution.

Unfortunately I always get an error message.
My DB is complaining about one of your functions.

I got my routing table from osm2po. The table has the following
structure:

1;”id”;”integer”
2;”osm_id”;”bigint”
3;”osm_name”;”character varying”
4;”osm_meta”;”character varying”
5;”osm_source_id”;”bigint”
6;”osm_target_id”;”bigint”;
7;”clazz”;”integer”
8;”flags”;”integer”
9;”source”;”integer”
10;”target”;”integer”
11;”length”;”double precision”
12;”kmh”;”integer”
13;”cost”;”double precision”
14;”reverse_cost”;”double precision”
15;”x1″;”double precision”
16;”y1″;”double precision”
17;”x2″;”double precision”
18;”y2″;”double precision”
19;”geom_way”;”geometry(LineString,4326)”

  • I installed the functions as mentioned via SQL window in pgAdmin3
    (copy&paste then excecute)
  • I create and populate the my_route table
  • When it comes to step 5 and I try

select id,lon,lat from pgr_tspDijkstraLen(’my_route’, 1260
) dj, my_route rt where dj.id2=rt.node;

my DB warns

ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 25 at
assignment PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible arrays SQL Status:2202E
Detail:Arrays with differing element dimensions are not compatible for
concatenation.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 25 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

Do you have any idea what went wrong? I really really need your
solutionget working. I would appreciate a lot.

Thanks for your help.

PS: this text is a copy of what I wrote on on the comment site of the
blog where I found the solution.

BR
Carsten


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

Thanks Steve,

coming home and adding your lines it returns with an error:

NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: <NULL>
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 25 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

I tried to write to Dose but he didn't reply yet.
Does anyone have a clue?

Try adding the follow line after the "begin" line:

    ids := '{}'::integer;

This should make sure the ids is initialized as an empty array of integers.

-Steve

Thanks for you help
Carsten

2014-02-20 16:24 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com
<mailto:woodbri@swoodbridge.com>>:

    On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

        Hi Carsten,

        The functions at
        http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql&gt;
        are not part of pgRouting.

        You need to ask this question to Ivan the author of the original
        article.

    Sorry, Dose was the original author.

        You probably need to add some debug statements to get a better
        understanding of what the code is doing. For example in
        pgr_makeDijkstraMatrix before the statement:

        ids := ids || array[r2.id1];

    You could try changing this line to:

    ids := ids || r2.id1;

    and see if that fixes the problem.

    -Steve

        Add:

        raise notice 'r2: %', r2;
        raise notice 'r2.id1: %', r2.id1;
        raise notice 'ids: %', ids;

        This should show you the progression of how the array ids is getting
        built as it appears to be compaining about that in the error
        message.

        Hope this helps,
            -Steve

        On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

            Hi everybody, I am new to this list and new to pgrouting.

            I found the following TSP example
            http://hardwarefetish.com/513-__pgrouting-dijksta-travelling-__salesman-problem-tsp-with-__openstreetmap
            <http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap&gt;

            and tried to reproduce the solution.

            Unfortunately I always get an error message.
            My DB is complaining about one of your functions.

            I got my routing table from osm2po. The table has the following
            structure:

            1;”id”;”integer”
            2;”osm_id”;”bigint”
            3;”osm_name”;”character varying”
            4;”osm_meta”;”character varying”
            5;”osm_source_id”;”bigint”
            6;”osm_target_id”;”bigint”;
            7;”clazz”;”integer”
            8;”flags”;”integer”
            9;”source”;”integer”
            10;”target”;”integer”
            11;”length”;”double precision”
            12;”kmh”;”integer”
            13;”cost”;”double precision”
            14;”reverse_cost”;”double precision”
            15;”x1″;”double precision”
            16;”y1″;”double precision”
            17;”x2″;”double precision”
            18;”y2″;”double precision”
            19;”geom_way”;”geometry(__LineString,4326)”

            - I installed the functions as mentioned via SQL window in
            pgAdmin3
            (copy&paste then excecute)
            - I create and populate the my_route table
            - When it comes to step 5 and I try

            select id,lon,lat from pgr_tspDijkstraLen(’my_route’, 1260
            ) dj, my_route rt where dj.id2=rt.node;

            my DB warns

            ERROR: cannot concatenate incompatible arrays
            DETAIL: Arrays with differing element dimensions are not
            compatible for
            concatenation.
            CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 25 at
            assignment PL/pgSQL function “pgr_tspdijkstra” line 8 at
            RETURN QUERY
            PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

            ********** Fehler **********

            ERROR: cannot concatenate incompatible arrays SQL Status:2202E
            Detail:Arrays with differing element dimensions are not
            compatible for
            concatenation.
            Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 25
            at assignment
            PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
            PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

            Do you have any idea what went wrong? I really really need your
            solutionget working. I would appreciate a lot.

            Thanks for your help.

            PS: this text is a copy of what I wrote on on the comment
            site of the
            blog where I found the solution.

            BR
            Carsten

            _________________________________________________
            Pgrouting-users mailing list
            Pgrouting-users@lists.osgeo.__org
            <mailto:Pgrouting-users@lists.osgeo.org>
            http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

        _________________________________________________
        Pgrouting-users mailing list
        Pgrouting-users@lists.osgeo.__org
        <mailto:Pgrouting-users@lists.osgeo.org>
        http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

    _________________________________________________
    Pgrouting-users mailing list
    Pgrouting-users@lists.osgeo.__org
    <mailto:Pgrouting-users@lists.osgeo.org>
    http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
    <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

2014-02-20 22:20 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com>:

On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

Thanks Steve,

coming home and adding your lines it returns with an error:

NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.
0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137
,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.
9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.
7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.
8361619299,7.7610621969,7.4929139614,5.8106133327,5.
9579132527,5.9888473034,6.5618433959,4.5013708887,1.
9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.
9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.
1242444467,3.8858731777,3.9596393887,4.9192685996,4.
6734033563,4.7511846457,4.4544981945,4.2748693367,3.
411559417,6.6851381985,6.6744741285,6.9296475385,7.
0136847108,7.1371500908,7.2719520708,6.6787720528,7.
3530295908,6.8599596928,7.2216891568,7.4951304208,7.
4404728868,8.1332243958,6.2736028029,6.963685048,6.
0483763169,5.8653351624,5.6164044005,6.54979166,5.
8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.
3996670482,6.171297855,5.648779598,5.5653279855,5.
671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.
170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.
5104826925,5.916268775,5.4418422465,5.4037394705,5.
640889612,5.1407657702,4.5523677017,5.3873769863,3.
601570449,2.978252449,4.8725960282,4.9817842222,5.
2355359365,5.1227105795,5.177856607,5.098596533,5.
1891181988,4.9327118245,4.4632330777,7.4879538737,4.
8591269625,3.1339054377,5.8472818275,4.6043306952,3.
3542942377,4.7660145915,6.6679095357,5.51150886,2.
7404344677,5.9332075344,6.2019594857,5.266709364,5.
4924174224,5.180577724,3.0277711677,6.2913260157,4.
2862670877,5.5461328154,5.5809644644,5.1132029296,5.
1904326724,4.8352505633,4.9641930171,5.1366240426,7.
0699378037,3.1274712477,5.1487646306,5.2717034197,5.
0200090866,3.0911490977,5.8984613527,5.1973381747,4.
2427530627,6.7293864957,4.7943011637,5.1130266607,5.
3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867
,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.
5867970832,9.4583860946,2.7784615917,5.4279953797,1.
9376872717,5.0813930177,5.8860618114,6.2411339874,6.
4536904614,6.0972641874,5.7247963284,5.9823452114,5.
8316140784,5.2398164977,6.2963392357,5.5864457124,6.
1599995178,5.2609646384,6.1012355027,6.4129483756,6.
0056487896,5.0106569884,5.4239402364,6.1148656496,2.
673828844,4.3332873457,3.2943586634,4.5834393467,7.
278601561,3.5870893269,3.3299191554,4.1049776549,5.
9256568037,6.2719334873,6.2594329923,5.5752581689,5.
6058592867,6.1311384893,6.4726413519,5.8973941434,6.
2572672069,5.9667442136,5.3965422637,7.2837623985,6.
9586195092,7.1137641952,6.3682104908,7.8495628418,7.
2245886958,6.2983788278,7.3509762248,6.9925366658,6.
5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: <NULL>
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 25 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

I tried to write to Dose but he didn't reply yet.
Does anyone have a clue?

Try adding the follow line after the "begin" line:

   ids := '{}'::integer;

This should make sure the ids is initialized as an empty array of integers.

-Steve

Again:
NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.2260793903,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}")
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 26 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

Thanks for your help. Maybe you need some other facts about my table?
The whole script I am excecuting is the following. I changed some things,
like adding your code and changing the table name 'ways' to 'cgn_2po_4pgr':

create or replace function pgr_makeDijkstraMatrix(thetbl text, sqlP text,
OUT dmatrix double precision, OUT ids integer)
  as
$body$
declare
    sql text;
    sql2 text;
    r record;
    r2 record;
    i integer;
    j integer;
    matrixl double precision;
begin

   ids := '{}'::integer;
    sql:='select node, id-1 as id from '||thetbl;
    for r in execute sql loop
            sql2:='select id1, array_agg(cost) as arow from (
          SELECT id1, id2, cost
          FROM pgr_kdijkstraCost('''||sqlP||''', '||r.node||
              ', (select array_agg(node) from '||thetbl||' where
id>'||r.id||'),
false, false)
         ) as foo group by id1 order by id1';
        for r2 in execute sql2 loop
        matrixl := '{}';
        for i in 1..r.id loop
                  matrixl := array_append(matrixl, dmatrix[i][r.id+1]);
                end loop;
                matrixl := array_cat(matrixl, r2.arow);
            dmatrix := array_cat(dmatrix, array[matrixl]);
            raise notice 'r2: %', r2;
raise notice 'r2.id1: %', r2.id1;
raise notice 'ids: %', ids;
            ids := ids || r2.id1;
        end loop;
    end loop;
end;
$body$
language plpgsql stable cost 10;

create or replace function pgr_tspDijkstra(thetbl text, sql text, start_id
integer, end_id integer default (-1))
    returns setof pgr_costResult as
$body$
declare
    sid integer;
    eid integer;

begin

    return query with dm as (
        select * from pgr_makeDijkstraMatrix( thetbl, sql )
    ),
    ids as (
        select (row_number() over (order by id asc))-1 as rnum, id
          from (
                select unnest(ids) as id
                  from dm
                ) foo
    ),
    t as (
        select a.seq, b.rnum, b.id
          from pgr_tsp(
                   (select dmatrix from dm),
                   (select rnum from ids where id=start_id limit
1)::integer,
                   (case when end_id = -1 then -1 else (select rnum from
ids where id=end_id limit 1) end)::integer
               ) a,
               ids b
         where a.id=b.rnum
    ),
    r as (
        select array_agg(t.rnum) as rnum from t
    )
    select t.seq::integer,
           t.rnum::integer as id1,
           t.id::integer as id2,

dm.dmatrix[r.rnum[t.seq+1]+1][r.rnum[(t.seq+1)%array_length(r.rnum,
1)+1]+1]::float8 as cost
      from t, dm, r;
end;
$body$
language plpgsql volatile cost 50 rows 50;

create or replace function pgr_tspDijkstraLen(thetbl text, start_id
integer, end_id integer default (-1))
    returns setof pgr_costResult as
$body$
begin
     return query SELECT * FROM pgr_tspDijkstra(thetbl,
          'SELECT id, source::integer, target::integer, length::double
precision AS cost FROM cgn_2po_4pgr',
           start_id, end_id);
end;
$body$
language plpgsql stable;

Maybe you've got another idea?
Thank you
Carsten

Thanks for you help

Carsten

2014-02-20 16:24 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com
<mailto:woodbri@swoodbridge.com>>:

    On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

        Hi Carsten,

        The functions at
        http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql

        <http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql&gt;
        are not part of pgRouting.

        You need to ask this question to Ivan the author of the original
        article.

    Sorry, Dose was the original author.

        You probably need to add some debug statements to get a better
        understanding of what the code is doing. For example in
        pgr_makeDijkstraMatrix before the statement:

        ids := ids || array[r2.id1];

    You could try changing this line to:

    ids := ids || r2.id1;

    and see if that fixes the problem.

    -Steve

        Add:

        raise notice 'r2: %', r2;
        raise notice 'r2.id1: %', r2.id1;
        raise notice 'ids: %', ids;

        This should show you the progression of how the array ids is
getting
        built as it appears to be compaining about that in the error
        message.

        Hope this helps,
            -Steve

        On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

            Hi everybody, I am new to this list and new to pgrouting.

            I found the following TSP example
            http://hardwarefetish.com/513-__pgrouting-dijksta-
travelling-__salesman-problem-tsp-with-__openstreetmap

            <http://hardwarefetish.com/513-pgrouting-dijksta-
travelling-salesman-problem-tsp-with-openstreetmap>

            and tried to reproduce the solution.

            Unfortunately I always get an error message.
            My DB is complaining about one of your functions.

            I got my routing table from osm2po. The table has the
following
            structure:

            1;”id”;”integer”
            2;”osm_id”;”bigint”
            3;”osm_name”;”character varying”
            4;”osm_meta”;”character varying”
            5;”osm_source_id”;”bigint”
            6;”osm_target_id”;”bigint”;
            7;”clazz”;”integer”
            8;”flags”;”integer”
            9;”source”;”integer”
            10;”target”;”integer”
            11;”length”;”double precision”
            12;”kmh”;”integer”
            13;”cost”;”double precision”
            14;”reverse_cost”;”double precision”
            15;”x1″;”double precision”
            16;”y1″;”double precision”
            17;”x2″;”double precision”
            18;”y2″;”double precision”
            19;”geom_way”;”geometry(__LineString,4326)”

            - I installed the functions as mentioned via SQL window in
            pgAdmin3
            (copy&paste then excecute)
            - I create and populate the my_route table
            - When it comes to step 5 and I try

            select id,lon,lat from pgr_tspDijkstraLen(’my_route’, 1260
            ) dj, my_route rt where dj.id2=rt.node;

            my DB warns

            ERROR: cannot concatenate incompatible arrays
            DETAIL: Arrays with differing element dimensions are not
            compatible for
            concatenation.
            CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 25 at
            assignment PL/pgSQL function “pgr_tspdijkstra” line 8 at
            RETURN QUERY
            PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

            ********** Fehler **********

            ERROR: cannot concatenate incompatible arrays SQL Status:2202E
            Detail:Arrays with differing element dimensions are not
            compatible for
            concatenation.
            Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 25
            at assignment
            PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
            PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

            Do you have any idea what went wrong? I really really need
your
            solutionget working. I would appreciate a lot.

            Thanks for your help.

            PS: this text is a copy of what I wrote on on the comment
            site of the
            blog where I found the solution.

            BR
            Carsten

            _________________________________________________
            Pgrouting-users mailing list
            Pgrouting-users@lists.osgeo.__org
            <mailto:Pgrouting-users@lists.osgeo.org>
            http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

        _________________________________________________
        Pgrouting-users mailing list
        Pgrouting-users@lists.osgeo.__org
        <mailto:Pgrouting-users@lists.osgeo.org>
        http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

    _________________________________________________
    Pgrouting-users mailing list
    Pgrouting-users@lists.osgeo.__org
    <mailto:Pgrouting-users@lists.osgeo.org>
    http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users

    <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

On 2/20/2014 4:39 PM, Carsten Hogertz wrote:

2014-02-20 22:20 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com
<mailto:woodbri@swoodbridge.com>>:

    On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

        Thanks Steve,

        coming home and adding your lines it returns with an error:

        NOTICE: r2:
        (34304,"{0,5.3602868897 <tel:3602868897>,4.6782573327
        <tel:6782573327>,5.6026971537 <tel:6026971537>,5.2062747797
        <tel:2062747797>,5.__0497181017,5.3147719797
        <tel:3147719797>,5.__0700916462,4.3220066797,4.__8593618137
        <tel:8593618137>,4.0002255227,6.__055760592,12.5155379824
        <tel:5155379824>,9.__3170226155,8.72783427270001,5.__9460446587,3.0868131677,5.__1839796057,5.2301666167,2.__1211198847,5.7037465591
        <tel:7037465591>,2.__7282842677,8.4758437557
        <tel:4758437557>,11.__1027935904,7.9434273599,7.__8361619299,7.7610621969,7.__4929139614,5.8106133327
        <tel:8106133327>,5.__9579132527,5.9888473034,6.__5618433959
        <tel:5618433959>,4.5013708887
        <tel:5013708887>,1.__9218516244,5.7559805232,5.__2267081177
        <tel:2267081177>,5.0968196707,4.__8949133597,5.9137964962
        <tel:9137964962>,4.__2936059427,4.6948533593,3.__4377318427
        <tel:4377318427>,3.7991617067,4.__1242444467,3.8858731777,3.__9596393887,4.9192685996
        <tel:9192685996>,4.__6734033563,4.7511846457,4.__4544981945,4.2748693367,3.__411559417,6.6851381985,6.__6744741285,6.9296475385,7.__0136847108,7.1371500908,7.__2719520708,6.6787720528,7.__3530295908,6.8599596928,7.__2216891568,7.4951304208,7.__4404728868,8.1332243958,6.__2736028029,6.963685048,6.__0483763169,5.8653351624,5.__6164044005,6.54979166,5.__8783224469,6.533468297,5.__8553434082,5.7676662122,6.__267915357,5.22607939

    03,3.745459072,6.352470342,5.__4392033722,5.5562602522,5.__3996670482,6.171297855,5.__648779598,5.5653279855,5.__671668653,5.3243595462,5.__879320328,5.859442385,6.__080574272,5.3767159992,6.__170852717,5.3001119472,5.__687201287,5.3573110752,3.__586385579,5.566591422,5.__5104826925,5.916268775,5.__4418422465,5.4037394705,5.__640889612,5.1407657702,4.__5523677017,5.3873769863,3.__601570449,2.978252449,4.__8725960282,4.9817842222,5.__2355359365,5.1227105795,5.__177856607,5.098596533,5.__1891181988,4.9327118245,4.__4632330777,7.4879538737,4.__8591269625,3.1339054377,5.__8472818275,4.6043306952,3.__3542942377,4.7660145915,6.__6679095357,5.51150886,2.__7404344677,5.9332075344,6.__2019594857,5.266709364,5.__4924174224,5.180577724,3.__0277711677,6.2913260157,4.__2862670877,5.5461328154,5.__5809644644,5.1132029296,5.__1904326724,4.8352505633,4.__9641930171,5.1366240426,7.__0699378037,3.1274712477,5.__1487646306,5.2717034197,5.__0200090866,3.0911490977,5.__8984613527,5.1973381747,4.__

2427530627,6.7293864957,4.__7943011637,5.1130266607,5.__3948779287,4.7124246547,5.2

    186371577,2.9723417287 <tel:9723417287>,2.3171875277,2.8159853427
    <tel:8159853427>,__4.7913513947,4.7863347867
    <tel:7863347867>,3.4531342837,__3.8161332287,5.8431115757,4.__4873126817,5.6577494097,5.__5867970832,9.4583860946,2.__7784615917,5.4279953797,1.__9376872717,5.0813930177,5.__8860618114,6.2411339874,6.__4536904614,6.0972641874,5.__7247963284,5.9823452114,5.__8316140784,5.2398164977,6.__2963392357,5.5864457124,6.__1599995178,5.2609646384,6.__1012355027,6.4129483756,6.__0056487896,5.0106569884,5.__4239402364,6.1148656496,2.__673828844,4.3332873457,3.__2943586634,4.5834393467,7.__278601561,3.5870893269,3.__3299191554,4.1049776549,5.__9256568037,6.2719334873,6.__2594329923,5.5752581689,5.__6058592867,6.1311384893,6.__4726413519,5.8973941434,6.__2572672069,5.9667442136,5.__3965422637,7.2837623985,6.__9586195092,7.1137641952,6.__3682104908,7.8495628418,7.__2245886958,6.2983788278,7.__3509762248,6.9925366658,6.__5600944468,6.936328733,6.__616665943,6.738732443}")

        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        NOTICE: r2.id1: 34304
        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        NOTICE: ids: <NULL>
        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        ERROR: cannot concatenate incompatible arrays
        DETAIL: Arrays with differing element dimensions are not
        compatible for
        concatenation.
        CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 25 at
        assignment
        PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

        I tried to write to Dose but he didn't reply yet.
        Does anyone have a clue?

    Try adding the follow line after the "begin" line:

        ids := '{}'::integer;

    This should make sure the ids is initialized as an empty array of
    integers.

    -Steve

Again:
NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 26 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

Thanks for your help. Maybe you need some other facts about my table?
The whole script I am excecuting is the following. I changed some
things, like adding your code and changing the table name 'ways' to
'cgn_2po_4pgr':

create or replace function pgr_makeDijkstraMatrix(thetbl text, sqlP
text, OUT dmatrix double precision, OUT ids integer)
   as
$body$
declare
     sql text;
     sql2 text;
     r record;
     r2 record;
     i integer;
     j integer;
     matrixl double precision;
begin

    ids := '{}'::integer;
     sql:='select node, id-1 as id from '||thetbl;
     for r in execute sql loop
             sql2:='select id1, array_agg(cost) as arow from (
           SELECT id1, id2, cost
           FROM pgr_kdijkstraCost('''||sqlP||''', '||r.node||
               ', (select array_agg(node) from '||thetbl||' where
id>'||r.id <http://r.id>||'), false, false)
          ) as foo group by id1 order by id1';
         for r2 in execute sql2 loop
         matrixl := '{}';
         for i in 1..r.id <http://r.id> loop
                   matrixl := array_append(matrixl, dmatrix[i][r.id
<http://r.id>+1]);
                 end loop;
                 matrixl := array_cat(matrixl, r2.arow);
             dmatrix := array_cat(dmatrix, array[matrixl]);
             raise notice 'r2: %', r2;
raise notice 'r2.id1: %', r2.id1;
raise notice 'ids: %', ids;

Sorry, I don't have a running version of this so this is somewhat guess work.

              -- ids := ids || r2.id1;
                ids := array_cat(ids, r2.id1);

So comment out the old like and rewrite like this.

-Steve

         end loop;
     end loop;
end;
$body$
language plpgsql stable cost 10;

create or replace function pgr_tspDijkstra(thetbl text, sql text,
start_id integer, end_id integer default (-1))
     returns setof pgr_costResult as
$body$
declare
     sid integer;
     eid integer;

begin

     return query with dm as (
         select * from pgr_makeDijkstraMatrix( thetbl, sql )
     ),
     ids as (
         select (row_number() over (order by id asc))-1 as rnum, id
           from (
                 select unnest(ids) as id
                   from dm
                 ) foo
     ),
     t as (
         select a.seq, b.rnum, b.id <http://b.id>
           from pgr_tsp(
                    (select dmatrix from dm),
                    (select rnum from ids where id=start_id limit
1)::integer,
                    (case when end_id = -1 then -1 else (select rnum
from ids where id=end_id limit 1) end)::integer
                ) a,
                ids b
          where a.id <http://a.id>=b.rnum
     ),
     r as (
         select array_agg(t.rnum) as rnum from t
     )
     select t.seq::integer,
            t.rnum::integer as id1,
            t.id::integer as id2,

dm.dmatrix[r.rnum[t.seq+1]+1][r.rnum[(t.seq+1)%array_length(r.rnum,
1)+1]+1]::float8 as cost
       from t, dm, r;
end;
$body$
language plpgsql volatile cost 50 rows 50;

create or replace function pgr_tspDijkstraLen(thetbl text, start_id
integer, end_id integer default (-1))
     returns setof pgr_costResult as
$body$
begin
      return query SELECT * FROM pgr_tspDijkstra(thetbl,
           'SELECT id, source::integer, target::integer, length::double
precision AS cost FROM cgn_2po_4pgr',
            start_id, end_id);
end;
$body$
language plpgsql stable;

Maybe you've got another idea?
Thank you
Carsten

        Thanks for you help
        Carsten

        2014-02-20 16:24 GMT+01:00 Stephen Woodbridge
        <woodbri@swoodbridge.com <mailto:woodbri@swoodbridge.com>
        <mailto:woodbri@swoodbridge.__com
        <mailto:woodbri@swoodbridge.com>>>:

             On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

                 Hi Carsten,

                 The functions at
        http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;

        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql&gt;&gt;
                 are not part of pgRouting.

                 You need to ask this question to Ivan the author of the
        original
                 article.

             Sorry, Dose was the original author.

                 You probably need to add some debug statements to get a
        better
                 understanding of what the code is doing. For example in
                 pgr_makeDijkstraMatrix before the statement:

                 ids := ids || array[r2.id1];

             You could try changing this line to:

             ids := ids || r2.id1;

             and see if that fixes the problem.

             -Steve

                 Add:

                 raise notice 'r2: %', r2;
                 raise notice 'r2.id1: %', r2.id1;
                 raise notice 'ids: %', ids;

                 This should show you the progression of how the array
        ids is getting
                 built as it appears to be compaining about that in the
        error
                 message.

                 Hope this helps,
                     -Steve

                 On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

                     Hi everybody, I am new to this list and new to
        pgrouting.

                     I found the following TSP example
        http://hardwarefetish.com/513-____pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap
        <http://hardwarefetish.com/513-__pgrouting-dijksta-travelling-__salesman-problem-tsp-with-__openstreetmap&gt;

        <http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap
        <http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap&gt;&gt;

                     and tried to reproduce the solution.

                     Unfortunately I always get an error message.
                     My DB is complaining about one of your functions.

                     I got my routing table from osm2po. The table has
        the following
                     structure:

                     1;”id”;”integer”
                     2;”osm_id”;”bigint”
                     3;”osm_name”;”character varying”
                     4;”osm_meta”;”character varying”
                     5;”osm_source_id”;”bigint”
                     6;”osm_target_id”;”bigint”;
                     7;”clazz”;”integer”
                     8;”flags”;”integer”
                     9;”source”;”integer”
                     10;”target”;”integer”
                     11;”length”;”double precision”
                     12;”kmh”;”integer”
                     13;”cost”;”double precision”
                     14;”reverse_cost”;”double precision”
                     15;”x1″;”double precision”
                     16;”y1″;”double precision”
                     17;”x2″;”double precision”
                     18;”y2″;”double precision”
                     19;”geom_way”;”geometry(____LineString,4326)”

                     - I installed the functions as mentioned via SQL
        window in
                     pgAdmin3
                     (copy&paste then excecute)
                     - I create and populate the my_route table
                     - When it comes to step 5 and I try

                     select id,lon,lat from
        pgr_tspDijkstraLen(’my_route’, 1260
                     ) dj, my_route rt where dj.id2=rt.node;

                     my DB warns

                     ERROR: cannot concatenate incompatible arrays
                     DETAIL: Arrays with differing element dimensions
        are not
                     compatible for
                     concatenation.
                     CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix”
        line 25 at
                     assignment PL/pgSQL function “pgr_tspdijkstra” line
        8 at
                     RETURN QUERY
                     PL/pgSQL function “pgr_tspdijkstralen” line 3 at
        RETURN QUERY

                     ********** Fehler **********

                     ERROR: cannot concatenate incompatible arrays SQL
        Status:2202E
                     Detail:Arrays with differing element dimensions are not
                     compatible for
                     concatenation.
                     Kontext:PL/pgSQL function “pgr_makedijkstramatrix”
        line 25
                     at assignment
                     PL/pgSQL function “pgr_tspdijkstra” line 8 at
        RETURN QUERY
                     PL/pgSQL function “pgr_tspdijkstralen” line 3 at
        RETURN QUERY

                     Do you have any idea what went wrong? I really
        really need your
                     solutionget working. I would appreciate a lot.

                     Thanks for your help.

                     PS: this text is a copy of what I wrote on on the
        comment
                     site of the
                     blog where I found the solution.

                     BR
                     Carsten

                     ___________________________________________________
                     Pgrouting-users mailing list
                     Pgrouting-users@lists.osgeo.____org
                     <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

                 ___________________________________________________
                 Pgrouting-users mailing list
                 Pgrouting-users@lists.osgeo.____org
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

             ___________________________________________________
             Pgrouting-users mailing list
             Pgrouting-users@lists.osgeo.____org
             <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

        _________________________________________________
        Pgrouting-users mailing list
        Pgrouting-users@lists.osgeo.__org
        <mailto:Pgrouting-users@lists.osgeo.org>
        http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

    _________________________________________________
    Pgrouting-users mailing list
    Pgrouting-users@lists.osgeo.__org
    <mailto:Pgrouting-users@lists.osgeo.org>
    http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
    <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

2014-02-20 22:47 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com>:

On 2/20/2014 4:39 PM, Carsten Hogertz wrote:

2014-02-20 22:20 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com
<mailto:woodbri@swoodbridge.com>>:

    On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

        Thanks Steve,

        coming home and adding your lines it returns with an error:

        NOTICE: r2:
        (34304,"{0,5.3602868897 <tel:3602868897>,4.6782573327
        <tel:6782573327>,5.6026971537 <tel:6026971537>,5.2062747797
        <tel:2062747797>,5.__0497181017,5.3147719797
        <tel:3147719797>,5.__0700916462,4.3220066797,4.__8593618137
        <tel:8593618137>,4.0002255227,6.__055760592,12.5155379824
        <tel:5155379824>,9.__3170226155,8.72783427270001,5.__9460446587,
3.0868131677,5.__1839796057,5.2301666167,2.__1211198847,5.7037465591
        <tel:7037465591>,2.__7282842677,8.4758437557
        <tel:4758437557>,11.__1027935904,7.9434273599,7.__8361619299,7.
7610621969,7.__4929139614,5.8106133327
        <tel:8106133327>,5.__9579132527,5.9888473034,6.__5618433959
        <tel:5618433959>,4.5013708887
        <tel:5013708887>,1.__9218516244,5.7559805232,5.__2267081177
        <tel:2267081177>,5.0968196707,4.__8949133597,5.9137964962
        <tel:9137964962>,4.__2936059427,4.6948533593,3.__4377318427
        <tel:4377318427>,3.7991617067,4.__1242444467,3.8858731777,3.__
9596393887,4.9192685996
        <tel:9192685996>,4.__6734033563,4.7511846457,4.__4544981945,4.
2748693367,3.__411559417,6.6851381985,6.__6744741285,6.9296475385
,7.__0136847108,7.1371500908,7.__2719520708,6.6787720528
,7.__3530295908,6.8599596928,7.__2216891568,7.4951304208,7.__4404728868
,8.1332243958,6.__2736028029,6.963685048,6.__0483763169,5.8653351624,5.__
6164044005,6.54979166,5.__8783224469,6.533468297,5.__8553434082,5.
7676662122,6.__267915357,5.22607939

    03,3.745459072,6.352470342,5.__4392033722,5.5562602522,5.__
3996670482,6.171297855,5.__648779598,5.5653279855,5.__
671668653,5.3243595462,5.__879320328,5.859442385,6.__
080574272,5.3767159992,6.__170852717,5.3001119472,5.__
687201287,5.3573110752,3.__586385579,5.566591422,5.__
5104826925,5.916268775,5.__4418422465,5.4037394705,5.__
640889612,5.1407657702,4.__5523677017,5.3873769863,3.__
601570449,2.978252449,4.__8725960282,4.9817842222,5.__
2355359365,5.1227105795,5.__177856607,5.098596533,5.__
1891181988,4.9327118245,4.__4632330777,7.4879538737,4.__
8591269625,3.1339054377,5.__8472818275,4.6043306952,3.__
3542942377,4.7660145915,6.__6679095357,5.51150886,2.__
7404344677,5.9332075344,6.__2019594857,5.266709364,5.__
4924174224,5.180577724,3.__0277711677,6.2913260157,4.__
2862670877,5.5461328154,5.__5809644644,5.1132029296,5.__
1904326724,4.8352505633,4.__9641930171,5.1366240426,7.__
0699378037,3.1274712477,5.__1487646306,5.2717034197,5.__
0200090866,3.0911490977,5.__8984613527,5.1973381747,4.__

2427530627,6.7293864957,4.__7943011637,5.1130266607,5.__
3948779287,4.7124246547,5.2

    186371577,2.9723417287 <tel:9723417287>,2.3171875277,2.8159853427
    <tel:8159853427>,__4.7913513947,4.7863347867
    <tel:7863347867>,3.4531342837,__3.8161332287,5.8431115757,4.__
4873126817,5.6577494097,5.__5867970832,9.4583860946,2.__
7784615917,5.4279953797,1.__9376872717,5.0813930177,5.__
8860618114,6.2411339874,6.__4536904614,6.0972641874,5.__
7247963284,5.9823452114,5.__8316140784,5.2398164977,6.__
2963392357,5.5864457124,6.__1599995178,5.2609646384,6.__
1012355027,6.4129483756,6.__0056487896,5.0106569884,5.__
4239402364,6.1148656496,2.__673828844,4.3332873457,3.__
2943586634,4.5834393467,7.__278601561,3.5870893269,3.__
3299191554,4.1049776549,5.__9256568037,6.2719334873,6.__
2594329923,5.5752581689,5.__6058592867,6.1311384893,6.__
4726413519,5.8973941434,6.__2572672069,5.9667442136,5.__
3965422637,7.2837623985,6.__9586195092,7.1137641952,6.__
3682104908,7.8495628418,7.__2245886958,6.2983788278,7.__
3509762248,6.9925366658,6.__5600944468,6.936328733,6.__
616665943,6.738732443}")

        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN
QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        NOTICE: r2.id1: 34304
        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN
QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        NOTICE: ids: <NULL>
        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN
QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        ERROR: cannot concatenate incompatible arrays
        DETAIL: Arrays with differing element dimensions are not
        compatible for
        concatenation.
        CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 25 at
        assignment
        PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

        I tried to write to Dose but he didn't reply yet.
        Does anyone have a clue?

    Try adding the follow line after the "begin" line:

        ids := '{}'::integer;

    This should make sure the ids is initialized as an empty array of
    integers.

    -Steve

Again:
NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.
0497181017,5.3147719797,5.0700916462,4.3220066797,4.
8593618137,4.0002255227,6.055760592,12.5155379824,9.
3170226155,8.72783427270001,5.9460446587,3.0868131677,5.
1839796057,5.2301666167,2.1211198847,5.7037465591,2.
7282842677,8.4758437557,11.1027935904,7.9434273599,7.
8361619299,7.7610621969,7.4929139614,5.8106133327,5.
9579132527,5.9888473034,6.5618433959,4.5013708887,1.
9218516244,5.7559805232,5.2267081177,5.0968196707,4.
8949133597,5.9137964962,4.2936059427,4.6948533593,3.
4377318427,3.7991617067,4.1242444467,3.8858731777,3.
9596393887,4.9192685996,4.6734033563,4.7511846457,4.
4544981945,4.2748693367,3.411559417,6.6851381985,6.
6744741285,6.9296475385,7.0136847108,7.1371500908,7.
2719520708,6.6787720528,7.3530295908,6.8599596928,7.
2216891568,7.4951304208,7.4404728868,8.1332243958,6.
2736028029,6.963685048,6.0483763169,5.8653351624,5.
6164044005,6.54979166,5.8783224469,6.533468297,5.
8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.
3996670482,6.171297855,5.648779598,5.5653279855,5.
671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.
170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.
5104826925,5.916268775,5.4418422465,5.4037394705,5.
640889612,5.1407657702,4.5523677017,5.3873769863,3.
601570449,2.978252449,4.8725960282,4.9817842222,5.
2355359365,5.1227105795,5.177856607,5.098596533,5.
1891181988,4.9327118245,4.4632330777,7.4879538737,4.
8591269625,3.1339054377,5.8472818275,4.6043306952,3.
3542942377,4.7660145915,6.6679095357,5.51150886,2.
7404344677,5.9332075344,6.2019594857,5.266709364,5.
4924174224,5.180577724,3.0277711677,6.2913260157,4.
2862670877,5.5461328154,5.5809644644,5.1132029296,5.
1904326724,4.8352505633,4.9641930171,5.1366240426,7.
0699378037,3.1274712477,5.1487646306,5.2717034197,5.
0200090866,3.0911490977,5.8984613527,5.1973381747,4.
2427530627,6.7293864957,4.7943011637,5.1130266607,5.
3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867
,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.
5867970832,9.4583860946,2.7784615917,5.4279953797,1.
9376872717,5.0813930177,5.8860618114,6.2411339874,6.
4536904614,6.0972641874,5.7247963284,5.9823452114,5.
8316140784,5.2398164977,6.2963392357,5.5864457124,6.
1599995178,5.2609646384,6.1012355027,6.4129483756,6.
0056487896,5.0106569884,5.4239402364,6.1148656496,2.
673828844,4.3332873457,3.2943586634,4.5834393467,7.
278601561,3.5870893269,3.3299191554,4.1049776549,5.
9256568037,6.2719334873,6.2594329923,5.5752581689,5.
6058592867,6.1311384893,6.4726413519,5.8973941434,6.
2572672069,5.9667442136,5.3965422637,7.2837623985,6.
9586195092,7.1137641952,6.3682104908,7.8495628418,7.
2245886958,6.2983788278,7.3509762248,6.9925366658,6.
5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: {}

CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 26 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

Thanks for your help. Maybe you need some other facts about my table?
The whole script I am excecuting is the following. I changed some
things, like adding your code and changing the table name 'ways' to
'cgn_2po_4pgr':

create or replace function pgr_makeDijkstraMatrix(thetbl text, sqlP
text, OUT dmatrix double precision, OUT ids integer)
   as
$body$
declare
     sql text;
     sql2 text;
     r record;
     r2 record;
     i integer;
     j integer;
     matrixl double precision;
begin

    ids := '{}'::integer;
     sql:='select node, id-1 as id from '||thetbl;
     for r in execute sql loop
             sql2:='select id1, array_agg(cost) as arow from (
           SELECT id1, id2, cost
           FROM pgr_kdijkstraCost('''||sqlP||''', '||r.node||
               ', (select array_agg(node) from '||thetbl||' where
id>'||r.id <http://r.id>||'), false, false)

          ) as foo group by id1 order by id1';
         for r2 in execute sql2 loop
         matrixl := '{}';
         for i in 1..r.id <http://r.id> loop

                   matrixl := array_append(matrixl, dmatrix[i][r.id
<http://r.id>+1]);

                 end loop;
                 matrixl := array_cat(matrixl, r2.arow);
             dmatrix := array_cat(dmatrix, array[matrixl]);
             raise notice 'r2: %', r2;
raise notice 'r2.id1: %', r2.id1;
raise notice 'ids: %', ids;

Sorry, I don't have a running version of this so this is somewhat guess
work.

             -- ids := ids || r2.id1;
               ids := array_cat(ids, r2.id1);

So comment out the old like and rewrite like this.

-Steve

Thanks for all your help Steve,
hope, we're getting closer! Look, not it returns this:
NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.2260793903,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}")
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

ERROR: function array_cat(integer, integer) does not exist
LINE 1: SELECT array_cat(ids, r2.id1)
               ^
HINT: No function matches the given name and argument types. You might
need to add explicit type casts.
QUERY: SELECT array_cat(ids, r2.id1)
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 31 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

********** Fehler **********

ERROR: function array_cat(integer, integer) does not exist
SQL Status:42883
Hinweis:No function matches the given name and argument types. You might
need to add explicit type casts.
Kontext:PL/pgSQL function "pgr_makedijkstramatrix" line 31 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

Function does not exist? Still have an idea?
Thanks
Carsten

          end loop;

     end loop;
end;
$body$
language plpgsql stable cost 10;

create or replace function pgr_tspDijkstra(thetbl text, sql text,
start_id integer, end_id integer default (-1))
     returns setof pgr_costResult as
$body$
declare
     sid integer;
     eid integer;

begin

     return query with dm as (
         select * from pgr_makeDijkstraMatrix( thetbl, sql )
     ),
     ids as (
         select (row_number() over (order by id asc))-1 as rnum, id
           from (
                 select unnest(ids) as id
                   from dm
                 ) foo
     ),
     t as (
         select a.seq, b.rnum, b.id <http://b.id>

           from pgr_tsp(
                    (select dmatrix from dm),
                    (select rnum from ids where id=start_id limit
1)::integer,
                    (case when end_id = -1 then -1 else (select rnum
from ids where id=end_id limit 1) end)::integer
                ) a,
                ids b
          where a.id <http://a.id>=b.rnum

     ),
     r as (
         select array_agg(t.rnum) as rnum from t
     )
     select t.seq::integer,
            t.rnum::integer as id1,
            t.id::integer as id2,

dm.dmatrix[r.rnum[t.seq+1]+1][r.rnum[(t.seq+1)%array_length(r.rnum,
1)+1]+1]::float8 as cost
       from t, dm, r;
end;
$body$
language plpgsql volatile cost 50 rows 50;

create or replace function pgr_tspDijkstraLen(thetbl text, start_id
integer, end_id integer default (-1))
     returns setof pgr_costResult as
$body$
begin
      return query SELECT * FROM pgr_tspDijkstra(thetbl,
           'SELECT id, source::integer, target::integer, length::double
precision AS cost FROM cgn_2po_4pgr',
            start_id, end_id);
end;
$body$
language plpgsql stable;

Maybe you've got another idea?
Thank you
Carsten

        Thanks for you help
        Carsten

        2014-02-20 16:24 GMT+01:00 Stephen Woodbridge
        <woodbri@swoodbridge.com <mailto:woodbri@swoodbridge.com>
        <mailto:woodbri@swoodbridge.__com

        <mailto:woodbri@swoodbridge.com>>>:

             On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

                 Hi Carsten,

                 The functions at
        http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;

        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql&gt;&gt;
                 are not part of pgRouting.

                 You need to ask this question to Ivan the author of the
        original
                 article.

             Sorry, Dose was the original author.

                 You probably need to add some debug statements to get a
        better
                 understanding of what the code is doing. For example in
                 pgr_makeDijkstraMatrix before the statement:

                 ids := ids || array[r2.id1];

             You could try changing this line to:

             ids := ids || r2.id1;

             and see if that fixes the problem.

             -Steve

                 Add:

                 raise notice 'r2: %', r2;
                 raise notice 'r2.id1: %', r2.id1;
                 raise notice 'ids: %', ids;

                 This should show you the progression of how the array
        ids is getting
                 built as it appears to be compaining about that in the
        error
                 message.

                 Hope this helps,
                     -Steve

                 On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

                     Hi everybody, I am new to this list and new to
        pgrouting.

                     I found the following TSP example
        http://hardwarefetish.com/513-____pgrouting-dijksta-__
travelling-__salesman-problem-__tsp-with-__openstreetmap
        <http://hardwarefetish.com/513-__pgrouting-dijksta-
travelling-__salesman-problem-tsp-with-__openstreetmap>

        <http://hardwarefetish.com/__513-pgrouting-dijksta-__
travelling-salesman-problem-__tsp-with-openstreetmap

        <http://hardwarefetish.com/513-pgrouting-dijksta-
travelling-salesman-problem-tsp-with-openstreetmap>>

                     and tried to reproduce the solution.

                     Unfortunately I always get an error message.
                     My DB is complaining about one of your functions.

                     I got my routing table from osm2po. The table has
        the following
                     structure:

                     1;”id”;”integer”
                     2;”osm_id”;”bigint”
                     3;”osm_name”;”character varying”
                     4;”osm_meta”;”character varying”
                     5;”osm_source_id”;”bigint”
                     6;”osm_target_id”;”bigint”;
                     7;”clazz”;”integer”
                     8;”flags”;”integer”
                     9;”source”;”integer”
                     10;”target”;”integer”
                     11;”length”;”double precision”
                     12;”kmh”;”integer”
                     13;”cost”;”double precision”
                     14;”reverse_cost”;”double precision”
                     15;”x1″;”double precision”
                     16;”y1″;”double precision”
                     17;”x2″;”double precision”
                     18;”y2″;”double precision”
                     19;”geom_way”;”geometry(____LineString,4326)”

                     - I installed the functions as mentioned via SQL
        window in
                     pgAdmin3
                     (copy&paste then excecute)
                     - I create and populate the my_route table
                     - When it comes to step 5 and I try

                     select id,lon,lat from
        pgr_tspDijkstraLen(’my_route’, 1260
                     ) dj, my_route rt where dj.id2=rt.node;

                     my DB warns

                     ERROR: cannot concatenate incompatible arrays
                     DETAIL: Arrays with differing element dimensions
        are not
                     compatible for
                     concatenation.
                     CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix”
        line 25 at
                     assignment PL/pgSQL function “pgr_tspdijkstra” line
        8 at
                     RETURN QUERY
                     PL/pgSQL function “pgr_tspdijkstralen” line 3 at
        RETURN QUERY

                     ********** Fehler **********

                     ERROR: cannot concatenate incompatible arrays SQL
        Status:2202E
                     Detail:Arrays with differing element dimensions are
not
                     compatible for
                     concatenation.
                     Kontext:PL/pgSQL function “pgr_makedijkstramatrix”
        line 25
                     at assignment
                     PL/pgSQL function “pgr_tspdijkstra” line 8 at
        RETURN QUERY
                     PL/pgSQL function “pgr_tspdijkstralen” line 3 at
        RETURN QUERY

                     Do you have any idea what went wrong? I really
        really need your
                     solutionget working. I would appreciate a lot.

                     Thanks for your help.

                     PS: this text is a copy of what I wrote on on the
        comment
                     site of the
                     blog where I found the solution.

                     BR
                     Carsten

                     ___________________________________________________
                     Pgrouting-users mailing list
                     Pgrouting-users@lists.osgeo.____org
                     <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

                 ___________________________________________________
                 Pgrouting-users mailing list
                 Pgrouting-users@lists.osgeo.____org
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

             ___________________________________________________
             Pgrouting-users mailing list
             Pgrouting-users@lists.osgeo.____org
             <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

        _________________________________________________
        Pgrouting-users mailing list
        Pgrouting-users@lists.osgeo.__org
        <mailto:Pgrouting-users@lists.osgeo.org>
        http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

    _________________________________________________
    Pgrouting-users mailing list
    Pgrouting-users@lists.osgeo.__org
    <mailto:Pgrouting-users@lists.osgeo.org>
    http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
    <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

On 2/20/2014 4:59 PM, Carsten Hogertz wrote:

2014-02-20 22:47 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com
<mailto:woodbri@swoodbridge.com>>:

    On 2/20/2014 4:39 PM, Carsten Hogertz wrote:

        2014-02-20 22:20 GMT+01:00 Stephen Woodbridge
        <woodbri@swoodbridge.com <mailto:woodbri@swoodbridge.com>
        <mailto:woodbri@swoodbridge.__com
        <mailto:woodbri@swoodbridge.com>>>:

             On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

                 Thanks Steve,

                 coming home and adding your lines it returns with an error:

                 NOTICE: r2:
                 (34304,"{0,5.3602868897 <tel:3602868897>
        <tel:3602868897 <tel:3602868897>>,4.6782573327 <tel:6782573327>
                 <tel:6782573327 <tel:6782573327>>,5.6026971537
        <tel:6026971537> <tel:6026971537 <tel:6026971537>>,5.2062747797
        <tel:2062747797>
                 <tel:2062747797
        <tel:2062747797>>,5.__0497181017,5.3147719797 <tel:3147719797>
                 <tel:3147719797
        <tel:3147719797>>,5.__0700916462,4.__3220066797,4.__8593618137
        <tel:8593618137>
                 <tel:8593618137
        <tel:8593618137>>,4.0002255227,6.____055760592,12.5155379824
        <tel:5155379824>
                 <tel:5155379824
        <tel:5155379824>>,9.__3170226155,8.__72783427270001,5.__9460446587,__3.0868131677,5.__1839796057,5.__2301666167,2.__1211198847,5.__7037465591
        <tel:7037465591>
                 <tel:7037465591
        <tel:7037465591>>,2.__7282842677,8.4758437557 <tel:4758437557>
                 <tel:4758437557
        <tel:4758437557>>,11.__1027935904,7.__9434273599,7.__8361619299,7.__7610621969,7.__4929139614,5.__8106133327
        <tel:8106133327>
                 <tel:8106133327
        <tel:8106133327>>,5.__9579132527,5.__9888473034,6.__5618433959
        <tel:5618433959>
                 <tel:5618433959 <tel:5618433959>>,4.5013708887
        <tel:5013708887>
                 <tel:5013708887
        <tel:5013708887>>,1.__9218516244,5.__7559805232,5.__2267081177
        <tel:2267081177>
                 <tel:2267081177
        <tel:2267081177>>,5.0968196707,4.____8949133597,5.9137964962
        <tel:9137964962>
                 <tel:9137964962
        <tel:9137964962>>,4.__2936059427,4.__6948533593,3.__4377318427
        <tel:4377318427>
                 <tel:4377318427
        <tel:4377318427>>,3.7991617067,4.____1242444467,3.8858731777,3.____9596393887,4.9192685996
        <tel:9192685996>
                 <tel:9192685996
        <tel:9192685996>>,4.__6734033563,4.__7511846457,4.__4544981945,4.__2748693367,3.__411559417,6.__6851381985,6.__6744741285,6.__9296475385
        <tel:9296475385>,7.__0136847108,7.__1371500908,7.__2719520708,6.__6787720528
        <tel:6787720528>,7.__3530295908,6.__8599596928
        <tel:8599596928>,7.__2216891568,7.__4951304208,7.__4404728868
        <tel:4404728868>,8.__1332243958,6.__2736028029,6.__963685048,6.__0483763169,5.__8653351624
        <tel:8653351624>,5.__6164044005
        <tel:6164044005>,6.__54979166,5.__8783224469
        <tel:8783224469>,6.__533468297,5.__8553434082
        <tel:8553434082>,5.__7676662122,6.__267915357,5.__22607939

        03,3.745459072,6.352470342,5.____4392033722,5.5562602522,5.____3996670482,6.171297855,5.____648779598,5.5653279855,5.____671668653,5.3243595462,5.____879320328,5.859442385
        <tel:5.859442385>,6.____080574272,5.3767159992,6.____170852717,5.3001119472,5.____687201287,5.3573110752,3.____586385579,5.566591422,5.____5104826925,5.916268775,5.____4418422465,5.4037394705,5.____640889612,5.1407657702,4.____5523677017,5.3873769863,3.____601570449,2.978252449,4.____8725960282,4.9817842222,5.____2355359365,5.1227105795,5.____177856607,5.098596533,5.____1891181988,4.9327118245,4.____4632330777,7.4879538737,4.____8591269625,3.1339054377,5.____8472818275,4.6043306952,3.____3542942377,4.7660145915,6.____6679095357,5.51150886,2.____7404344677,5.9332075344,6.____2019594857,5.266709364,5.____4924174224,5.180577724,3.____0277711677,6.2913260157,4.____2862670877,5.5461328154,5.____5809644644,5.1132029296,5.____1904326724,4.8352505633,4.____9641930171,5.1366240426,7.____0699378037,3.1274712477,5.____1487646306,5.2717034197,5.____0200090866,3.0911490977,5.____8984613527,5.1973381747,4.__

    2427530627,6.7293864957,4.____7943011637,5.1130266607,5.____3948779287,4.7124246547,5.2

             186371577,2.9723417287 <tel:9723417287> <tel:9723417287
        <tel:9723417287>>,2.3171875277,2.8159853427 <tel:8159853427>
             <tel:8159853427
        <tel:8159853427>>,__4.7913513947,4.7863347867 <tel:7863347867>
             <tel:7863347867
        <tel:7863347867>>,3.4531342837,__3.__8161332287,5.8431115757,4.____4873126817,5.6577494097,5.____5867970832,9.4583860946,2.____7784615917,5.4279953797,1.____9376872717,5.0813930177,5.____8860618114,6.2411339874,6.____4536904614,6.0972641874,5.____7247963284,5.9823452114,5.____8316140784,5.2398164977,6.____2963392357,5.5864457124,6.____1599995178,5.2609646384,6.____1012355027,6.4129483756,6.____0056487896,5.0106569884,5.____4239402364,6.1148656496,2.____673828844,4.3332873457,3.____2943586634,4.5834393467,7.____278601561,3.5870893269,3.____3299191554,4.1049776549,5.____9256568037,6.2719334873,6.____2594329923,5.5752581689,5.____6058592867,6.1311384893,6.____4726413519,5.8973941434,6.____2572672069,5.9667442136,5.____3965422637,7.2837623985,6.____9586195092,7.1137641952,6.____3682104908,7.8495628418,7.____2245886958,6.2983788278,7.____3509762248,6.9925366658,6.____5600944468,6.936328733,6.____616665943,6.738732443}")

                 CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
        RETURN QUERY
                 PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN
        QUERY
                 NOTICE: r2.id1: 34304
                 CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
        RETURN QUERY
                 PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN
        QUERY
                 NOTICE: ids: <NULL>
                 CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
        RETURN QUERY
                 PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN
        QUERY
                 ERROR: cannot concatenate incompatible arrays
                 DETAIL: Arrays with differing element dimensions are not
                 compatible for
                 concatenation.
                 CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix"
        line 25 at
                 assignment
                 PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
                 PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN
        QUERY

                 I tried to write to Dose but he didn't reply yet.
                 Does anyone have a clue?

             Try adding the follow line after the "begin" line:

                 ids := '{}'::integer;

             This should make sure the ids is initialized as an empty
        array of
             integers.

             -Steve

        Again:
        NOTICE: r2:
        (34304,"{0,5.3602868897 <tel:3602868897>,4.6782573327
        <tel:6782573327>,5.6026971537 <tel:6026971537>,5.2062747797
        <tel:2062747797>,5.__0497181017,5.3147719797,5.__0700916462,4.3220066797,4.__8593618137,4.0002255227,6.__055760592,12.5155379824,9.__3170226155,8.72783427270001,5.__9460446587,3.0868131677,5.__1839796057,5.2301666167,2.__1211198847,5.7037465591,2.__7282842677,8.4758437557,11.__1027935904,7.9434273599,7.__8361619299,7.7610621969,7.__4929139614,5.8106133327,5.__9579132527,5.9888473034,6.__5618433959,4.5013708887,1.__9218516244,5.7559805232,5.__2267081177,5.0968196707,4.__8949133597,5.9137964962,4.__2936059427,4.6948533593,3.__4377318427,3.7991617067,4.__1242444467,3.8858731777,3.__9596393887,4.9192685996,4.__6734033563,4.7511846457,4.__4544981945,4.2748693367,3.__411559417,6.6851381985,6.__6744741285,6.9296475385,7.__0136847108,7.1371500908,7.__2719520708,6.6787720528,7.__3530295908,6.8599596928,7.__2216891568,7.4951304208,7.__4404728868,8.1332243958,6.__2736028029,6.963685048,6.__0483763169,5.8653351624,5.__6164044005,6.54979166,5.__8783224469,6.533468297,5.__8553434082,5.7

676662122,6.__267915357,5.22607939

    03,3.745459072,6.352470342,5.__4392033722,5.5562602522,5.__3996670482,6.171297855,5.__648779598,5.5653279855,5.__671668653,5.3243595462,5.__879320328,5.859442385,6.__080574272,5.3767159992,6.__170852717,5.3001119472,5.__687201287,5.3573110752,3.__586385579,5.566591422,5.__5104826925,5.916268775,5.__4418422465,5.4037394705,5.__640889612,5.1407657702,4.__5523677017,5.3873769863,3.__601570449,2.978252449,4.__8725960282,4.9817842222,5.__2355359365,5.1227105795,5.__177856607,5.098596533,5.__1891181988,4.9327118245,4.__4632330777,7.4879538737,4.__8591269625,3.1339054377,5.__8472818275,4.6043306952,3.__3542942377,4.7660145915,6.__6679095357,5.51150886,2.__7404344677,5.9332075344,6.__2019594857,5.266709364,5.__4924174224,5.180577724,3.__0277711677,6.2913260157,4.__2862670877,5.5461328154,5.__5809644644,5.1132029296,5.__1904326724,4.8352505633,4.__9641930171,5.1366240426,7.__0699378037,3.1274712477,5.__1487646306,5.2717034197,5.__0200090866,3.0911490977,5.__8984613527,5.1973381747,4.__

2427530627,6.7293864957,4.__7943011637,5.1130266607,5.__3948779287,4.7124246547,5.2

    186371577,2.9723417287 <tel:9723417287>,2.3171875277,2.8159853427
    <tel:8159853427>,__4.7913513947,4.7863347867
    <tel:7863347867>,3.4531342837,__3.8161332287,5.8431115757,4.__4873126817,5.6577494097,5.__5867970832,9.4583860946,2.__7784615917,5.4279953797,1.__9376872717,5.0813930177,5.__8860618114,6.2411339874,6.__4536904614,6.0972641874,5.__7247963284,5.9823452114,5.__8316140784,5.2398164977,6.__2963392357,5.5864457124,6.__1599995178,5.2609646384,6.__1012355027,6.4129483756,6.__0056487896,5.0106569884,5.__4239402364,6.1148656496,2.__673828844,4.3332873457,3.__2943586634,4.5834393467,7.__278601561,3.5870893269,3.__3299191554,4.1049776549,5.__9256568037,6.2719334873,6.__2594329923,5.5752581689,5.__6058592867,6.1311384893,6.__4726413519,5.8973941434,6.__2572672069,5.9667442136,5.__3965422637,7.2837623985,6.__9586195092,7.1137641952,6.__3682104908,7.8495628418,7.__2245886958,6.2983788278,7.__3509762248,6.9925366658,6.__5600944468,6.936328733,6.__616665943,6.738732443}")

        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        NOTICE: r2.id1: 34304
        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        NOTICE: ids: {}

        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        ERROR: cannot concatenate incompatible arrays
        DETAIL: Arrays with differing element dimensions are not
        compatible for
        concatenation.
        CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 26 at
        assignment
        PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

        Thanks for your help. Maybe you need some other facts about my
        table?
        The whole script I am excecuting is the following. I changed some
        things, like adding your code and changing the table name 'ways' to
        'cgn_2po_4pgr':

        create or replace function pgr_makeDijkstraMatrix(thetbl text, sqlP
        text, OUT dmatrix double precision, OUT ids integer)
            as
        $body$
        declare
              sql text;
              sql2 text;
              r record;
              r2 record;
              i integer;
              j integer;
              matrixl double precision;
        begin

             ids := '{}'::integer;
              sql:='select node, id-1 as id from '||thetbl;
              for r in execute sql loop
                      sql2:='select id1, array_agg(cost) as arow from (
                    SELECT id1, id2, cost
                    FROM pgr_kdijkstraCost('''||sqlP||'__'', '||r.node||
                        ', (select array_agg(node) from '||thetbl||' where
        id>'||r.id <http://r.id> <http://r.id>||'), false, false)

                   ) as foo group by id1 order by id1';
                  for r2 in execute sql2 loop
                  matrixl := '{}';
                  for i in 1..r.id <http://r.id> <http://r.id> loop

                            matrixl := array_append(matrixl,
        dmatrix[i][r.id <http://r.id>
        <http://r.id>+1]);

                          end loop;
                          matrixl := array_cat(matrixl, r2.arow);
                      dmatrix := array_cat(dmatrix, array[matrixl]);
                      raise notice 'r2: %', r2;
        raise notice 'r2.id1: %', r2.id1;
        raise notice 'ids: %', ids;

    Sorry, I don't have a running version of this so this is somewhat
    guess work.

                  -- ids := ids || r2.id1;
                    ids := array_cat(ids, r2.id1);

try changing the line above to:

                       ids := array_cat(ids, array[r2.id1]);

    So comment out the old like and rewrite like this.

    -Steve

Thanks for all your help Steve,
hope, we're getting closer! Look, not it returns this:
NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

ERROR: function array_cat(integer, integer) does not exist
LINE 1: SELECT array_cat(ids, r2.id1)
                ^
HINT: No function matches the given name and argument types. You might
need to add explicit type casts.
QUERY: SELECT array_cat(ids, r2.id1)
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 31 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

********** Fehler **********

ERROR: function array_cat(integer, integer) does not exist
SQL Status:42883
Hinweis:No function matches the given name and argument types. You might
need to add explicit type casts.
Kontext:PL/pgSQL function "pgr_makedijkstramatrix" line 31 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

Function does not exist? Still have an idea?
Thanks
Carsten

                  end loop;
              end loop;
        end;
        $body$
        language plpgsql stable cost 10;

        create or replace function pgr_tspDijkstra(thetbl text, sql text,
        start_id integer, end_id integer default (-1))
              returns setof pgr_costResult as
        $body$
        declare
              sid integer;
              eid integer;

        begin

              return query with dm as (
                  select * from pgr_makeDijkstraMatrix( thetbl, sql )
              ),
              ids as (
                  select (row_number() over (order by id asc))-1 as rnum, id
                    from (
                          select unnest(ids) as id
                            from dm
                          ) foo
              ),
              t as (
                  select a.seq, b.rnum, b.id <http://b.id> <http://b.id>

                    from pgr_tsp(
                             (select dmatrix from dm),
                             (select rnum from ids where id=start_id limit
        1)::integer,
                             (case when end_id = -1 then -1 else (select
        rnum
        from ids where id=end_id limit 1) end)::integer
                         ) a,
                         ids b
                   where a.id <http://a.id> <http://a.id>=b.rnum

              ),
              r as (
                  select array_agg(t.rnum) as rnum from t
              )
              select t.seq::integer,
                     t.rnum::integer as id1,
                     t.id::integer as id2,

        dm.dmatrix[r.rnum[t.seq+1]+1][__r.rnum[(t.seq+1)%array_length(__r.rnum,
        1)+1]+1]::float8 as cost
                from t, dm, r;
        end;
        $body$
        language plpgsql volatile cost 50 rows 50;

        create or replace function pgr_tspDijkstraLen(thetbl text, start_id
        integer, end_id integer default (-1))
              returns setof pgr_costResult as
        $body$
        begin
               return query SELECT * FROM pgr_tspDijkstra(thetbl,
                    'SELECT id, source::integer, target::integer,
        length::double
        precision AS cost FROM cgn_2po_4pgr',
                     start_id, end_id);
        end;
        $body$
        language plpgsql stable;

        Maybe you've got another idea?
        Thank you
        Carsten

                 Thanks for you help
                 Carsten

                 2014-02-20 16:24 GMT+01:00 Stephen Woodbridge
                 <woodbri@swoodbridge.com
        <mailto:woodbri@swoodbridge.com>
        <mailto:woodbri@swoodbridge.__com <mailto:woodbri@swoodbridge.com>>
                 <mailto:woodbri@swoodbridge.
        <mailto:woodbri@swoodbridge.>____com

                 <mailto:woodbri@swoodbridge.__com
        <mailto:woodbri@swoodbridge.com>>>>:

                      On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

                          Hi Carsten,

                          The functions at
        http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql&gt;

        <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;&gt;

        <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;

        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql&gt;&gt;&gt;
                          are not part of pgRouting.

                          You need to ask this question to Ivan the
        author of the
                 original
                          article.

                      Sorry, Dose was the original author.

                          You probably need to add some debug statements
        to get a
                 better
                          understanding of what the code is doing. For
        example in
                          pgr_makeDijkstraMatrix before the statement:

                          ids := ids || array[r2.id1];

                      You could try changing this line to:

                      ids := ids || r2.id1;

                      and see if that fixes the problem.

                      -Steve

                          Add:

                          raise notice 'r2: %', r2;
                          raise notice 'r2.id1: %', r2.id1;
                          raise notice 'ids: %', ids;

                          This should show you the progression of how
        the array
                 ids is getting
                          built as it appears to be compaining about
        that in the
                 error
                          message.

                          Hope this helps,
                              -Steve

                          On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

                              Hi everybody, I am new to this list and new to
                 pgrouting.

                              I found the following TSP example
        http://hardwarefetish.com/513-______pgrouting-dijksta-____travelling-__salesman-problem-____tsp-with-__openstreetmap
        <http://hardwarefetish.com/513-____pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap&gt;

        <http://hardwarefetish.com/__513-__pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap
        <http://hardwarefetish.com/513-__pgrouting-dijksta-travelling-__salesman-problem-tsp-with-__openstreetmap&gt;&gt;

        <http://hardwarefetish.com/____513-pgrouting-dijksta-____travelling-salesman-problem-____tsp-with-openstreetmap
        <http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap&gt;

        <http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap
        <http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap&gt;&gt;&gt;

                              and tried to reproduce the solution.

                              Unfortunately I always get an error message.
                              My DB is complaining about one of your
        functions.

                              I got my routing table from osm2po. The
        table has
                 the following
                              structure:

                              1;”id”;”integer”
                              2;”osm_id”;”bigint”
                              3;”osm_name”;”character varying”
                              4;”osm_meta”;”character varying”
                              5;”osm_source_id”;”bigint”
                              6;”osm_target_id”;”bigint”;
                              7;”clazz”;”integer”
                              8;”flags”;”integer”
                              9;”source”;”integer”
                              10;”target”;”integer”
                              11;”length”;”double precision”
                              12;”kmh”;”integer”
                              13;”cost”;”double precision”
                              14;”reverse_cost”;”double precision”
                              15;”x1″;”double precision”
                              16;”y1″;”double precision”
                              17;”x2″;”double precision”
                              18;”y2″;”double precision”

          19;”geom_way”;”geometry(______LineString,4326)”

                              - I installed the functions as mentioned
        via SQL
                 window in
                              pgAdmin3
                              (copy&paste then excecute)
                              - I create and populate the my_route table
                              - When it comes to step 5 and I try

                              select id,lon,lat from
                 pgr_tspDijkstraLen(’my_route’, 1260
                              ) dj, my_route rt where dj.id2=rt.node;

                              my DB warns

                              ERROR: cannot concatenate incompatible arrays
                              DETAIL: Arrays with differing element
        dimensions
                 are not
                              compatible for
                              concatenation.
                              CONTEXT: PL/pgSQL function
        “pgr_makedijkstramatrix”
                 line 25 at
                              assignment PL/pgSQL function
        “pgr_tspdijkstra” line
                 8 at
                              RETURN QUERY
                              PL/pgSQL function “pgr_tspdijkstralen”
        line 3 at
                 RETURN QUERY

                              ********** Fehler **********

                              ERROR: cannot concatenate incompatible
        arrays SQL
                 Status:2202E
                              Detail:Arrays with differing element
        dimensions are not
                              compatible for
                              concatenation.
                              Kontext:PL/pgSQL function
        “pgr_makedijkstramatrix”
                 line 25
                              at assignment
                              PL/pgSQL function “pgr_tspdijkstra” line 8 at
                 RETURN QUERY
                              PL/pgSQL function “pgr_tspdijkstralen”
        line 3 at
                 RETURN QUERY

                              Do you have any idea what went wrong? I really
                 really need your
                              solutionget working. I would appreciate a lot.

                              Thanks for your help.

                              PS: this text is a copy of what I wrote on
        on the
                 comment
                              site of the
                              blog where I found the solution.

                              BR
                              Carsten

          _____________________________________________________
                              Pgrouting-users mailing list
                              Pgrouting-users@lists.osgeo.______org
                              <mailto:Pgrouting-users@lists.
        <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>>
        http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;

          _____________________________________________________
                          Pgrouting-users mailing list
                          Pgrouting-users@lists.osgeo.______org
                          <mailto:Pgrouting-users@lists.
        <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>>
        http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;

                      _____________________________________________________
                      Pgrouting-users mailing list
                      Pgrouting-users@lists.osgeo.______org
                      <mailto:Pgrouting-users@lists.
        <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>>
        http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;

                 ___________________________________________________
                 Pgrouting-users mailing list
                 Pgrouting-users@lists.osgeo.____org
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

             ___________________________________________________
             Pgrouting-users mailing list
             Pgrouting-users@lists.osgeo.____org
             <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

        _________________________________________________
        Pgrouting-users mailing list
        Pgrouting-users@lists.osgeo.__org
        <mailto:Pgrouting-users@lists.osgeo.org>
        http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

    _________________________________________________
    Pgrouting-users mailing list
    Pgrouting-users@lists.osgeo.__org
    <mailto:Pgrouting-users@lists.osgeo.org>
    http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
    <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

2014-02-20 23:25 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com>:

On 2/20/2014 4:59 PM, Carsten Hogertz wrote:

2014-02-20 22:47 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com
<mailto:woodbri@swoodbridge.com>>:

    On 2/20/2014 4:39 PM, Carsten Hogertz wrote:

        2014-02-20 22:20 GMT+01:00 Stephen Woodbridge
        <woodbri@swoodbridge.com <mailto:woodbri@swoodbridge.com>
        <mailto:woodbri@swoodbridge.__com
        <mailto:woodbri@swoodbridge.com>>>:

             On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

                 Thanks Steve,

                 coming home and adding your lines it returns with an
error:

                 NOTICE: r2:
                 (34304,"{0,5.3602868897 <tel:3602868897>
        <tel:3602868897 <tel:3602868897>>,4.6782573327 <tel:6782573327>
                 <tel:6782573327 <tel:6782573327>>,5.6026971537
        <tel:6026971537> <tel:6026971537 <tel:6026971537>>,5.2062747797
        <tel:2062747797>
                 <tel:2062747797

        <tel:2062747797>>,5.__0497181017,5.3147719797 <tel:3147719797>
                 <tel:3147719797
        <tel:3147719797>>,5.__0700916462,4.__3220066797,4.__8593618137
        <tel:8593618137>
                 <tel:8593618137
        <tel:8593618137>>,4.0002255227,6.____055760592,12.5155379824
        <tel:5155379824>
                 <tel:5155379824
        <tel:5155379824>>,9.__3170226155,8.__
72783427270001,5.__9460446587,__3.0868131677,5.__1839796057,
5.__2301666167,2.__1211198847,5.__7037465591
        <tel:7037465591>
                 <tel:7037465591

        <tel:7037465591>>,2.__7282842677,8.4758437557 <tel:4758437557>
                 <tel:4758437557
        <tel:4758437557>>,11.__1027935904,7.__
9434273599,7.__8361619299,7.__7610621969,7.__4929139614,5.__8106133327
        <tel:8106133327>
                 <tel:8106133327
        <tel:8106133327>>,5.__9579132527,5.__9888473034,6.__5618433959
        <tel:5618433959>
                 <tel:5618433959 <tel:5618433959>>,4.5013708887
        <tel:5013708887>
                 <tel:5013708887
        <tel:5013708887>>,1.__9218516244,5.__7559805232,5.__2267081177
        <tel:2267081177>
                 <tel:2267081177
        <tel:2267081177>>,5.0968196707,4.____8949133597,5.9137964962
        <tel:9137964962>
                 <tel:9137964962
        <tel:9137964962>>,4.__2936059427,4.__6948533593,3.__4377318427
        <tel:4377318427>
                 <tel:4377318427
        <tel:4377318427>>,3.7991617067,4.____
1242444467,3.8858731777,3.____9596393887,4.9192685996
        <tel:9192685996>
                 <tel:9192685996
        <tel:9192685996>>,4.__6734033563,4.__
7511846457,4.__4544981945,4.__2748693367,3.__411559417,6.__
6851381985,6.__6744741285,6.__9296475385
        <tel:9296475385>,7.__0136847108,7.__
1371500908,7.__2719520708,6.__6787720528
        <tel:6787720528>,7.__3530295908,6.__8599596928
        <tel:8599596928>,7.__2216891568,7.__4951304208,7.__4404728868
        <tel:4404728868>,8.__1332243958,6.__2736028029,6.__963685048,6.__
0483763169,5.__8653351624
        <tel:8653351624>,5.__6164044005
        <tel:6164044005>,6.__54979166,5.__8783224469
        <tel:8783224469>,6.__533468297,5.__8553434082
        <tel:8553434082>,5.__7676662122,6.__267915357,5.__22607939

        03,3.745459072,6.352470342,5.____4392033722,5.5562602522,5._
___3996670482,6.171297855,5.____648779598,5.5653279855,5.___
_671668653,5.3243595462,5.____879320328,5.859442385
        <tel:5.859442385>,6.____080574272,5.3767159992,6.____170852717,5.
3001119472,5.____687201287,5.3573110752,3.____586385579,5.
566591422,5.____5104826925,5.916268775,5.____4418422465,5.4037394705
,5.____640889612,5.1407657702,4.____5523677017,5.
3873769863,3.____601570449,2.978252449,4.____8725960282,4.
9817842222,5.____2355359365,5.1227105795,5.____177856607,5.
098596533,5.____1891181988,4.9327118245,4.____4632330777,7.
4879538737,4.____8591269625,3.1339054377,5.____8472818275,4.6043306952
,3.____3542942377,4.7660145915,6.____6679095357,5.51150886,2.____
7404344677,5.9332075344,6.____2019594857,5.266709364,5.____4924174224,5.
180577724,3.____0277711677,6.2913260157,4.____2862670877,5.
5461328154,5.____5809644644,5.1132029296,5.____1904326724,4.
8352505633,4.____9641930171,5.1366240426,7.____0699378037,3.
1274712477,5.____1487646306,5.2717034197,5.____0200090866,3.
0911490977,5.____8984613527,5.1973381747,4.__

    2427530627,6.7293864957,4.____7943011637,5.1130266607,5.____
3948779287,4.7124246547,5.2

             186371577,2.9723417287 <tel:9723417287> <tel:9723417287

        <tel:9723417287>>,2.3171875277,2.8159853427 <tel:8159853427>
             <tel:8159853427

        <tel:8159853427>>,__4.7913513947,4.7863347867 <tel:7863347867>
             <tel:7863347867
        <tel:7863347867>>,3.4531342837,__3.__
8161332287,5.8431115757,4.____4873126817,5.6577494097,5.____
5867970832,9.4583860946,2.____7784615917,5.4279953797,1.____
9376872717,5.0813930177,5.____8860618114,6.2411339874,6.____
4536904614,6.0972641874,5.____7247963284,5.9823452114,5.____
8316140784,5.2398164977,6.____2963392357,5.5864457124,6.____
1599995178,5.2609646384,6.____1012355027,6.4129483756,6.____
0056487896,5.0106569884,5.____4239402364,6.1148656496,2.____
673828844,4.3332873457,3.____2943586634,4.5834393467,7.____
278601561,3.5870893269,3.____3299191554,4.1049776549,5.____
9256568037,6.2719334873,6.____2594329923,5.5752581689,5.____
6058592867,6.1311384893,6.____4726413519,5.8973941434,6.____
2572672069,5.9667442136,5.____3965422637,7.2837623985,6.____
9586195092,7.1137641952,6.____3682104908,7.8495628418,7.____
2245886958,6.2983788278,7.____3509762248,6.9925366658,6.____
5600944468,6.936328733,6.____616665943,6.738732443}")

                 CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
        RETURN QUERY
                 PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN
        QUERY
                 NOTICE: r2.id1: 34304
                 CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
        RETURN QUERY
                 PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN
        QUERY
                 NOTICE: ids: <NULL>
                 CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
        RETURN QUERY
                 PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN
        QUERY
                 ERROR: cannot concatenate incompatible arrays
                 DETAIL: Arrays with differing element dimensions are not
                 compatible for
                 concatenation.
                 CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix"
        line 25 at
                 assignment
                 PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN
QUERY
                 PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN
        QUERY

                 I tried to write to Dose but he didn't reply yet.
                 Does anyone have a clue?

             Try adding the follow line after the "begin" line:

                 ids := '{}'::integer;

             This should make sure the ids is initialized as an empty
        array of
             integers.

             -Steve

        Again:
        NOTICE: r2:
        (34304,"{0,5.3602868897 <tel:3602868897>,4.6782573327
        <tel:6782573327>,5.6026971537 <tel:6026971537>,5.2062747797
        <tel:2062747797>,5.__0497181017,5.3147719797,5.__
0700916462,4.3220066797,4.__8593618137,4.0002255227,6.__055760592,12.
5155379824,9.__3170226155,8.72783427270001,5.__9460446587,
3.0868131677,5.__1839796057,5.2301666167,2.__1211198847,5.
7037465591,2.__7282842677,8.4758437557,11.__1027935904,7.
9434273599,7.__8361619299,7.7610621969,7.__4929139614,5.
8106133327,5.__9579132527,5.9888473034,6.__5618433959,4.
5013708887,1.__9218516244,5.7559805232,5.__2267081177,5.
0968196707,4.__8949133597,5.9137964962,4.__2936059427,4.
6948533593,3.__4377318427,3.7991617067,4.__1242444467,3.
8858731777,3.__9596393887,4.9192685996,4.__6734033563,4.
7511846457,4.__4544981945,4.2748693367,3.__411559417,6.
6851381985,6.__6744741285,6.9296475385,7.__0136847108,7.
1371500908,7.__2719520708,6.6787720528,7.__3530295908,6.
8599596928,7.__2216891568,7.4951304208,7.__4404728868,8.
1332243958,6.__2736028029,6.963685048,6.__0483763169,5.
8653351624,5.__6164044005,6.54979166,5.__8783224469,6.
533468297,5.__8553434082,5.7

676662122,6.__267915357,5.22607939

    03,3.745459072,6.352470342,5.__4392033722,5.5562602522,5.__
3996670482,6.171297855,5.__648779598,5.5653279855,5.__
671668653,5.3243595462,5.__879320328,5.859442385,6.__
080574272,5.3767159992,6.__170852717,5.3001119472,5.__
687201287,5.3573110752,3.__586385579,5.566591422,5.__
5104826925,5.916268775,5.__4418422465,5.4037394705,5.__
640889612,5.1407657702,4.__5523677017,5.3873769863,3.__
601570449,2.978252449,4.__8725960282,4.9817842222,5.__
2355359365,5.1227105795,5.__177856607,5.098596533,5.__
1891181988,4.9327118245,4.__4632330777,7.4879538737,4.__
8591269625,3.1339054377,5.__8472818275,4.6043306952,3.__
3542942377,4.7660145915,6.__6679095357,5.51150886,2.__
7404344677,5.9332075344,6.__2019594857,5.266709364,5.__
4924174224,5.180577724,3.__0277711677,6.2913260157,4.__
2862670877,5.5461328154,5.__5809644644,5.1132029296,5.__
1904326724,4.8352505633,4.__9641930171,5.1366240426,7.__
0699378037,3.1274712477,5.__1487646306,5.2717034197,5.__
0200090866,3.0911490977,5.__8984613527,5.1973381747,4.__

2427530627,6.7293864957,4.__7943011637,5.1130266607,5.__
3948779287,4.7124246547,5.2

    186371577,2.9723417287 <tel:9723417287>,2.3171875277,2.8159853427
    <tel:8159853427>,__4.7913513947,4.7863347867
    <tel:7863347867>,3.4531342837,__3.8161332287,5.8431115757,4.__
4873126817,5.6577494097,5.__5867970832,9.4583860946,2.__
7784615917,5.4279953797,1.__9376872717,5.0813930177,5.__
8860618114,6.2411339874,6.__4536904614,6.0972641874,5.__
7247963284,5.9823452114,5.__8316140784,5.2398164977,6.__
2963392357,5.5864457124,6.__1599995178,5.2609646384,6.__
1012355027,6.4129483756,6.__0056487896,5.0106569884,5.__
4239402364,6.1148656496,2.__673828844,4.3332873457,3.__
2943586634,4.5834393467,7.__278601561,3.5870893269,3.__
3299191554,4.1049776549,5.__9256568037,6.2719334873,6.__
2594329923,5.5752581689,5.__6058592867,6.1311384893,6.__
4726413519,5.8973941434,6.__2572672069,5.9667442136,5.__
3965422637,7.2837623985,6.__9586195092,7.1137641952,6.__
3682104908,7.8495628418,7.__2245886958,6.2983788278,7.__
3509762248,6.9925366658,6.__5600944468,6.936328733,6.__
616665943,6.738732443}")

        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN
QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        NOTICE: r2.id1: 34304
        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN
QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        NOTICE: ids: {}

        CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN
QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
        ERROR: cannot concatenate incompatible arrays
        DETAIL: Arrays with differing element dimensions are not
        compatible for
        concatenation.
        CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 26 at
        assignment
        PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
        PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

        Thanks for your help. Maybe you need some other facts about my
        table?
        The whole script I am excecuting is the following. I changed some
        things, like adding your code and changing the table name 'ways'
to
        'cgn_2po_4pgr':

        create or replace function pgr_makeDijkstraMatrix(thetbl text,
sqlP
        text, OUT dmatrix double precision, OUT ids integer)
            as
        $body$
        declare
              sql text;
              sql2 text;
              r record;
              r2 record;
              i integer;
              j integer;
              matrixl double precision;
        begin

             ids := '{}'::integer;
              sql:='select node, id-1 as id from '||thetbl;
              for r in execute sql loop
                      sql2:='select id1, array_agg(cost) as arow from (
                    SELECT id1, id2, cost
                    FROM pgr_kdijkstraCost('''||sqlP||'__'', '||r.node||

                        ', (select array_agg(node) from '||thetbl||' where
        id>'||r.id <http://r.id> <http://r.id>||'), false, false)

                   ) as foo group by id1 order by id1';
                  for r2 in execute sql2 loop
                  matrixl := '{}';
                  for i in 1..r.id <http://r.id> <http://r.id> loop

                            matrixl := array_append(matrixl,
        dmatrix[i][r.id <http://r.id>
        <http://r.id>+1]);

                          end loop;
                          matrixl := array_cat(matrixl, r2.arow);
                      dmatrix := array_cat(dmatrix, array[matrixl]);
                      raise notice 'r2: %', r2;
        raise notice 'r2.id1: %', r2.id1;
        raise notice 'ids: %', ids;

    Sorry, I don't have a running version of this so this is somewhat
    guess work.

                  -- ids := ids || r2.id1;
                    ids := array_cat(ids, r2.id1);

try changing the line above to:

                      ids := array_cat(ids, array[r2.id1]);

Hi Steve, thank you. Back in office now but I'll try that later at home.
I'll let you know and hopefully I get a good result :slight_smile:
Thanks so much.
Carsten

    So comment out the old like and rewrite like this.

    -Steve

Thanks for all your help Steve,
hope, we're getting closer! Look, not it returns this:
NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.
0497181017,5.3147719797,5.0700916462,4.3220066797,4.
8593618137,4.0002255227,6.055760592,12.5155379824,9.
3170226155,8.72783427270001,5.9460446587,3.0868131677,5.
1839796057,5.2301666167,2.1211198847,5.7037465591,2.
7282842677,8.4758437557,11.1027935904,7.9434273599,7.
8361619299,7.7610621969,7.4929139614,5.8106133327,5.
9579132527,5.9888473034,6.5618433959,4.5013708887,1.
9218516244,5.7559805232,5.2267081177,5.0968196707,4.
8949133597,5.9137964962,4.2936059427,4.6948533593,3.
4377318427,3.7991617067,4.1242444467,3.8858731777,3.
9596393887,4.9192685996,4.6734033563,4.7511846457,4.
4544981945,4.2748693367,3.411559417,6.6851381985,6.
6744741285,6.9296475385,7.0136847108,7.1371500908,7.
2719520708,6.6787720528,7.3530295908,6.8599596928,7.
2216891568,7.4951304208,7.4404728868,8.1332243958,6.
2736028029,6.963685048,6.0483763169,5.8653351624,5.
6164044005,6.54979166,5.8783224469,6.533468297,5.
8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.
3996670482,6.171297855,5.648779598,5.5653279855,5.
671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.
170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.
5104826925,5.916268775,5.4418422465,5.4037394705,5.
640889612,5.1407657702,4.5523677017,5.3873769863,3.
601570449,2.978252449,4.8725960282,4.9817842222,5.
2355359365,5.1227105795,5.177856607,5.098596533,5.
1891181988,4.9327118245,4.4632330777,7.4879538737,4.
8591269625,3.1339054377,5.8472818275,4.6043306952,3.
3542942377,4.7660145915,6.6679095357,5.51150886,2.
7404344677,5.9332075344,6.2019594857,5.266709364,5.
4924174224,5.180577724,3.0277711677,6.2913260157,4.
2862670877,5.5461328154,5.5809644644,5.1132029296,5.
1904326724,4.8352505633,4.9641930171,5.1366240426,7.
0699378037,3.1274712477,5.1487646306,5.2717034197,5.
0200090866,3.0911490977,5.8984613527,5.1973381747,4.
2427530627,6.7293864957,4.7943011637,5.1130266607,5.
3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867
,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.
5867970832,9.4583860946,2.7784615917,5.4279953797,1.
9376872717,5.0813930177,5.8860618114,6.2411339874,6.
4536904614,6.0972641874,5.7247963284,5.9823452114,5.
8316140784,5.2398164977,6.2963392357,5.5864457124,6.
1599995178,5.2609646384,6.1012355027,6.4129483756,6.
0056487896,5.0106569884,5.4239402364,6.1148656496,2.
673828844,4.3332873457,3.2943586634,4.5834393467,7.
278601561,3.5870893269,3.3299191554,4.1049776549,5.
9256568037,6.2719334873,6.2594329923,5.5752581689,5.
6058592867,6.1311384893,6.4726413519,5.8973941434,6.
2572672069,5.9667442136,5.3965422637,7.2837623985,6.
9586195092,7.1137641952,6.3682104908,7.8495628418,7.
2245886958,6.2983788278,7.3509762248,6.9925366658,6.
5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

ERROR: function array_cat(integer, integer) does not exist

LINE 1: SELECT array_cat(ids, r2.id1)
                ^
HINT: No function matches the given name and argument types. You might
need to add explicit type casts.
QUERY: SELECT array_cat(ids, r2.id1)
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 31 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

********** Fehler **********

ERROR: function array_cat(integer, integer) does not exist
SQL Status:42883
Hinweis:No function matches the given name and argument types. You might
need to add explicit type casts.
Kontext:PL/pgSQL function "pgr_makedijkstramatrix" line 31 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

Function does not exist? Still have an idea?
Thanks
Carsten

                  end loop;
              end loop;
        end;
        $body$
        language plpgsql stable cost 10;

        create or replace function pgr_tspDijkstra(thetbl text, sql text,
        start_id integer, end_id integer default (-1))
              returns setof pgr_costResult as
        $body$
        declare
              sid integer;
              eid integer;

        begin

              return query with dm as (
                  select * from pgr_makeDijkstraMatrix( thetbl, sql )
              ),
              ids as (
                  select (row_number() over (order by id asc))-1 as rnum,
id
                    from (
                          select unnest(ids) as id
                            from dm
                          ) foo
              ),
              t as (
                  select a.seq, b.rnum, b.id <http://b.id> <http://b.id>

                    from pgr_tsp(
                             (select dmatrix from dm),
                             (select rnum from ids where id=start_id limit
        1)::integer,
                             (case when end_id = -1 then -1 else (select
        rnum
        from ids where id=end_id limit 1) end)::integer
                         ) a,
                         ids b
                   where a.id <http://a.id> <http://a.id>=b.rnum

              ),
              r as (
                  select array_agg(t.rnum) as rnum from t
              )
              select t.seq::integer,
                     t.rnum::integer as id1,
                     t.id::integer as id2,

        dm.dmatrix[r.rnum[t.seq+1]+1][__r.rnum[(t.seq+1)%array_
length(__r.rnum,

        1)+1]+1]::float8 as cost
                from t, dm, r;
        end;
        $body$
        language plpgsql volatile cost 50 rows 50;

        create or replace function pgr_tspDijkstraLen(thetbl text,
start_id
        integer, end_id integer default (-1))
              returns setof pgr_costResult as
        $body$
        begin
               return query SELECT * FROM pgr_tspDijkstra(thetbl,
                    'SELECT id, source::integer, target::integer,
        length::double
        precision AS cost FROM cgn_2po_4pgr',
                     start_id, end_id);
        end;
        $body$
        language plpgsql stable;

        Maybe you've got another idea?
        Thank you
        Carsten

                 Thanks for you help
                 Carsten

                 2014-02-20 16:24 GMT+01:00 Stephen Woodbridge
                 <woodbri@swoodbridge.com
        <mailto:woodbri@swoodbridge.com>
        <mailto:woodbri@swoodbridge.__com <mailto:woodbri@swoodbridge.com
>>
                 <mailto:woodbri@swoodbridge.
        <mailto:woodbri@swoodbridge.>____com

                 <mailto:woodbri@swoodbridge.__com
        <mailto:woodbri@swoodbridge.com>>>>:

                      On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

                          Hi Carsten,

                          The functions at
        http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql&gt;

        <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;&gt;

        <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;

        <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql
        <http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql&gt;&gt;&gt;
                          are not part of pgRouting.

                          You need to ask this question to Ivan the
        author of the
                 original
                          article.

                      Sorry, Dose was the original author.

                          You probably need to add some debug statements
        to get a
                 better
                          understanding of what the code is doing. For
        example in
                          pgr_makeDijkstraMatrix before the statement:

                          ids := ids || array[r2.id1];

                      You could try changing this line to:

                      ids := ids || r2.id1;

                      and see if that fixes the problem.

                      -Steve

                          Add:

                          raise notice 'r2: %', r2;
                          raise notice 'r2.id1: %', r2.id1;
                          raise notice 'ids: %', ids;

                          This should show you the progression of how
        the array
                 ids is getting
                          built as it appears to be compaining about
        that in the
                 error
                          message.

                          Hope this helps,
                              -Steve

                          On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

                              Hi everybody, I am new to this list and new
to
                 pgrouting.

                              I found the following TSP example
        http://hardwarefetish.com/513-______pgrouting-dijksta-____
travelling-__salesman-problem-____tsp-with-__openstreetmap
        <http://hardwarefetish.com/513-____pgrouting-dijksta-__
travelling-__salesman-problem-__tsp-with-__openstreetmap>

        <http://hardwarefetish.com/__513-__pgrouting-dijksta-__
travelling-__salesman-problem-__tsp-with-__openstreetmap
        <http://hardwarefetish.com/513-__pgrouting-dijksta-
travelling-__salesman-problem-tsp-with-__openstreetmap>>

        <http://hardwarefetish.com/____513-pgrouting-dijksta-____
travelling-salesman-problem-____tsp-with-openstreetmap
        <http://hardwarefetish.com/__513-pgrouting-dijksta-__
travelling-salesman-problem-__tsp-with-openstreetmap>

        <http://hardwarefetish.com/__513-pgrouting-dijksta-__
travelling-salesman-problem-__tsp-with-openstreetmap
        <http://hardwarefetish.com/513-pgrouting-dijksta-
travelling-salesman-problem-tsp-with-openstreetmap>>>

                              and tried to reproduce the solution.

                              Unfortunately I always get an error message.
                              My DB is complaining about one of your
        functions.

                              I got my routing table from osm2po. The
        table has
                 the following
                              structure:

                              1;”id”;”integer”
                              2;”osm_id”;”bigint”
                              3;”osm_name”;”character varying”
                              4;”osm_meta”;”character varying”
                              5;”osm_source_id”;”bigint”
                              6;”osm_target_id”;”bigint”;
                              7;”clazz”;”integer”
                              8;”flags”;”integer”
                              9;”source”;”integer”
                              10;”target”;”integer”
                              11;”length”;”double precision”
                              12;”kmh”;”integer”
                              13;”cost”;”double precision”
                              14;”reverse_cost”;”double precision”
                              15;”x1″;”double precision”
                              16;”y1″;”double precision”
                              17;”x2″;”double precision”
                              18;”y2″;”double precision”

          19;”geom_way”;”geometry(______LineString,4326)”

                              - I installed the functions as mentioned
        via SQL
                 window in
                              pgAdmin3
                              (copy&paste then excecute)
                              - I create and populate the my_route table
                              - When it comes to step 5 and I try

                              select id,lon,lat from
                 pgr_tspDijkstraLen(’my_route’, 1260
                              ) dj, my_route rt where dj.id2=rt.node;

                              my DB warns

                              ERROR: cannot concatenate incompatible
arrays
                              DETAIL: Arrays with differing element
        dimensions
                 are not
                              compatible for
                              concatenation.
                              CONTEXT: PL/pgSQL function
        “pgr_makedijkstramatrix”
                 line 25 at
                              assignment PL/pgSQL function
        “pgr_tspdijkstra” line
                 8 at
                              RETURN QUERY
                              PL/pgSQL function “pgr_tspdijkstralen”
        line 3 at
                 RETURN QUERY

                              ********** Fehler **********

                              ERROR: cannot concatenate incompatible
        arrays SQL
                 Status:2202E
                              Detail:Arrays with differing element
        dimensions are not
                              compatible for
                              concatenation.
                              Kontext:PL/pgSQL function
        “pgr_makedijkstramatrix”
                 line 25
                              at assignment
                              PL/pgSQL function “pgr_tspdijkstra” line 8
at
                 RETURN QUERY
                              PL/pgSQL function “pgr_tspdijkstralen”
        line 3 at
                 RETURN QUERY

                              Do you have any idea what went wrong? I
really
                 really need your
                              solutionget working. I would appreciate a
lot.

                              Thanks for your help.

                              PS: this text is a copy of what I wrote on
        on the
                 comment
                              site of the
                              blog where I found the solution.

                              BR
                              Carsten

          _____________________________________________________
                              Pgrouting-users mailing list
                              Pgrouting-users@lists.osgeo.______org
                              <mailto:Pgrouting-users@lists.
        <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>>
        http://lists.osgeo.org/______mailman/listinfo/pgrouting-___
___users
        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;

          _____________________________________________________
                          Pgrouting-users mailing list
                          Pgrouting-users@lists.osgeo.______org
                          <mailto:Pgrouting-users@lists.
        <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>>
        http://lists.osgeo.org/______mailman/listinfo/pgrouting-___
___users
        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;

                      ______________________________
_______________________
                      Pgrouting-users mailing list
                      Pgrouting-users@lists.osgeo.______org
                      <mailto:Pgrouting-users@lists.
        <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>>
        http://lists.osgeo.org/______mailman/listinfo/pgrouting-___
___users
        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

        <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;

                 ___________________________________________________
                 Pgrouting-users mailing list
                 Pgrouting-users@lists.osgeo.____org
                 <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

             ___________________________________________________
             Pgrouting-users mailing list
             Pgrouting-users@lists.osgeo.____org
             <mailto:Pgrouting-users@lists.__osgeo.org
        <mailto:Pgrouting-users@lists.osgeo.org>>
        http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

        <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

        _________________________________________________
        Pgrouting-users mailing list
        Pgrouting-users@lists.osgeo.__org
        <mailto:Pgrouting-users@lists.osgeo.org>
        http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

    _________________________________________________
    Pgrouting-users mailing list
    Pgrouting-users@lists.osgeo.__org
    <mailto:Pgrouting-users@lists.osgeo.org>
    http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
    <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

Hi Steve,

have been busy the last days so I only check your Thursday’s solution right now. Still not working.

My function looks like this:

create or replace function pgr_makeDijkstraMatrix(thetbl text, sqlP text, OUT dmatrix double precision, OUT ids integer)
as
$body$
declare
sql text;
sql2 text;
r record;
r2 record;
i integer;
j integer;
matrixl double precision;
begin

ids := ‘{}’::integer;
sql:=‘select node, id-1 as id from ‘||thetbl;
for r in execute sql loop
sql2:=‘select id1, array_agg(cost) as arow from (
SELECT id1, id2, cost
FROM pgr_kdijkstraCost(’’’||sqlP||‘’‘, ‘||r.node||
‘, (select array_agg(node) from ‘||thetbl||’ where id>’||r.id||’), false, false)
) as foo group by id1 order by id1’;
for r2 in execute sql2 loop
matrixl := ‘{}’;
for i in 1…r.id loop
matrixl := array_append(matrixl, dmatrix[i][r.id+1]);
end loop;
matrixl := array_cat(matrixl, r2.arow);
dmatrix := array_cat(dmatrix, array[matrixl]);
raise notice ‘r2: %’, r2;
raise notice ‘r2.id1: %’, r2.id1;
raise notice ‘ids: %’, ids;
–ids := ids || r2.id1;
ids := array_cat(ids, array[r2.id1]);
end loop;
end loop;
end;
$body$
language plpgsql stable cost 10;

create or replace function pgr_tspDijkstra(thetbl text, sql text, start_id integer, end_id integer default (-1))
returns setof pgr_costResult as
$body$
declare
sid integer;
eid integer;

begin

return query with dm as (
select * from pgr_makeDijkstraMatrix( thetbl, sql )
),
ids as (
select (row_number() over (order by id asc))-1 as rnum, id
from (
select unnest(ids) as id
from dm
) foo
),
t as (
select a.seq, b.rnum, b.id
from pgr_tsp(
(select dmatrix from dm),
(select rnum from ids where id=start_id limit 1)::integer,
(case when end_id = -1 then -1 else (select rnum from ids where id=end_id limit 1) end)::integer
) a,
ids b
where a.id=b.rnum
),
r as (
select array_agg(t.rnum) as rnum from t
)
select t.seq::integer,
t.rnum::integer as id1,
t.id::integer as id2,
dm.dmatrix[r.rnum[t.seq+1]+1][r.rnum[(t.seq+1)%array_length(r.rnum, 1)+1]+1]::float8 as cost
from t, dm, r;
end;
$body$
language plpgsql volatile cost 50 rows 50;

create or replace function pgr_tspDijkstraLen(thetbl text, start_id integer, end_id integer default (-1))
returns setof pgr_costResult as
$body$
begin
return query SELECT * FROM pgr_tspDijkstra(thetbl,
‘SELECT id, source::integer, target::integer, length::double precision AS cost FROM cgn_2po_4pgr’,
start_id, end_id);
end;
$body$
language plpgsql stable;

AND the error I am getting:
NOTICE: r2: (34304,“{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.2260793903,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}”)
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 26 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible arrays
SQL Status:2202E
Detail:Arrays with differing element dimensions are not compatible for concatenation.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 26 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

HOW comes? I really don’t know what to do.

May you be so kind and try to help again?

Thanks

Carsten

···

2014-02-21 9:36 GMT+01:00 Carsten Hogertz <carsten.hogertz@gmail.com>:

2014-02-20 23:25 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com>:

On 2/20/2014 4:59 PM, Carsten Hogertz wrote:

2014-02-20 22:47 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com

mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>:

On 2/20/2014 4:39 PM, Carsten Hogertz wrote:

2014-02-20 22:20 GMT+01:00 Stephen Woodbridge
<woodbri@swoodbridge.com mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)

<mailto:woodbri@swoodbridge.__com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>>:

On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

Thanks Steve,

coming home and adding your lines it returns with an error:

NOTICE: r2:
(34304,"{0,5.3602868897 tel:3602868897

<tel:3602868897 tel:3602868897>,4.6782573327 tel:6782573327
<tel:6782573327 tel:6782573327>,5.6026971537
tel:6026971537 <tel:6026971537 tel:6026971537>,5.2062747797
tel:2062747797
<tel:2062747797

tel:2062747797>,5.__0497181017,5.3147719797 tel:3147719797

<tel:3147719797
tel:3147719797>,5.__0700916462,4.__3220066797,4.__8593618137
tel:8593618137
<tel:8593618137
tel:8593618137>,4.0002255227,6.____055760592,12.5155379824
tel:5155379824
<tel:5155379824
tel:5155379824>,9.__3170226155,8.__72783427270001,5.__9460446587,__3.0868131677,5.__1839796057,5.__2301666167,2.__1211198847,5.__7037465591
tel:7037465591
<tel:7037465591

tel:7037465591>,2.__7282842677,8.4758437557 tel:4758437557

<tel:4758437557
tel:4758437557>,11.__1027935904,7.__9434273599,7.__8361619299,7.__7610621969,7.__4929139614,5.__8106133327
tel:8106133327
<tel:8106133327
tel:8106133327>,5.__9579132527,5.__9888473034,6.__5618433959
tel:5618433959
<tel:5618433959 tel:5618433959>,4.5013708887
tel:5013708887
<tel:5013708887
tel:5013708887>,1.__9218516244,5.__7559805232,5.__2267081177
tel:2267081177
<tel:2267081177
tel:2267081177>,5.0968196707,4.____8949133597,5.9137964962
tel:9137964962
<tel:9137964962
tel:9137964962>,4.__2936059427,4.__6948533593,3.__4377318427
tel:4377318427
<tel:4377318427
tel:4377318427>,3.7991617067,4.____1242444467,3.8858731777,3.____9596393887,4.9192685996
tel:9192685996
<tel:9192685996
tel:9192685996>,4.__6734033563,4.__7511846457,4.__4544981945,4.__2748693367,3.__411559417,6.__6851381985,6.__6744741285,6.__9296475385
tel:9296475385,7.__0136847108,7.__1371500908,7.__2719520708,6.__6787720528
tel:6787720528,7.__3530295908,6.__8599596928
tel:8599596928,7.__2216891568,7.__4951304208,7.__4404728868
tel:4404728868,8.__1332243958,6.__2736028029,6.__963685048,6.__0483763169,5.__8653351624
tel:8653351624,5.__6164044005
tel:6164044005,6.__54979166,5.__8783224469
tel:8783224469,6.__533468297,5.__8553434082
tel:8553434082,5.__7676662122,6.__267915357,5.__22607939

03,3.745459072,6.352470342,5.____4392033722,5.5562602522,5.____3996670482,6.171297855,5.____648779598,5.5653279855,5.____671668653,5.3243595462,5.____879320328,5.859442385
tel:5.859442385,6.____080574272,5.3767159992,6.____170852717,5.3001119472,5.____687201287,5.3573110752,3.____586385579,5.566591422,5.____5104826925,5.916268775,5.____4418422465,5.4037394705,5.____640889612,5.1407657702,4.____5523677017,5.3873769863,3.____601570449,2.978252449,4.____8725960282,4.9817842222,5.____2355359365,5.1227105795,5.____177856607,5.098596533,5.____1891181988,4.9327118245,4.____4632330777,7.4879538737,4.____8591269625,3.1339054377,5.____8472818275,4.6043306952,3.____3542942377,4.7660145915,6.____6679095357,5.51150886,2.____7404344677,5.9332075344,6.____2019594857,5.266709364,5.____4924174224,5.180577724,3.____0277711677,6.2913260157,4.____2862670877,5.5461328154,5.____5809644644,5.1132029296,5.____1904326724,4.8352505633,4.____9641930171,5.1366240426,7.____0699378037,3.1274712477,5.____1487646306,5.2717034197,5.____0200090866,3.0911490977,5.__8984613527,5.1973381747,4.

2427530627,6.7293864957,4.____7943011637,5.1130266607,5.____3948779287,4.7124246547,5.2

186371577,2.9723417287 tel:9723417287 <tel:9723417287

tel:9723417287>,2.3171875277,2.8159853427 tel:8159853427

<tel:8159853427

tel:8159853427>,__4.7913513947,4.7863347867 tel:7863347867

<tel:7863347867
tel:7863347867>,3.4531342837,__3.__8161332287,5.8431115757,4.____4873126817,5.6577494097,5.____5867970832,9.4583860946,2.____7784615917,5.4279953797,1.____9376872717,5.0813930177,5.____8860618114,6.2411339874,6.____4536904614,6.0972641874,5.____7247963284,5.9823452114,5.____8316140784,5.2398164977,6.____2963392357,5.5864457124,6.____1599995178,5.2609646384,6.____1012355027,6.4129483756,6.____0056487896,5.0106569884,5.____4239402364,6.1148656496,2.____673828844,4.3332873457,3.____2943586634,4.5834393467,7.____278601561,3.5870893269,3.____3299191554,4.1049776549,5.____9256568037,6.2719334873,6.____2594329923,5.5752581689,5.____6058592867,6.1311384893,6.____4726413519,5.8973941434,6.____2572672069,5.9667442136,5.____3965422637,7.2837623985,6.____9586195092,7.1137641952,6.____3682104908,7.8495628418,7.____2245886958,6.2983788278,7.____3509762248,6.9925366658,6.____5600944468,6.936328733,6.____616665943,6.738732443}")

CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN
QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN
QUERY
NOTICE: ids:
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN
QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not
compatible for
concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix”
line 25 at
assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN
QUERY

I tried to write to Dose but he didn’t reply yet.
Does anyone have a clue?

Try adding the follow line after the “begin” line:

ids := ‘{}’::integer;

This should make sure the ids is initialized as an empty
array of
integers.

-Steve

Again:
NOTICE: r2:

(34304,"{0,5.3602868897 tel:3602868897,4.6782573327
tel:6782573327,5.6026971537 tel:6026971537,5.2062747797

tel:2062747797,5.__0497181017,5.3147719797,5.__0700916462,4.3220066797,4.__8593618137,4.0002255227,6.__055760592,12.5155379824,9.__3170226155,8.72783427270001,5.__9460446587,3.0868131677,5.__1839796057,5.2301666167,2.__1211198847,5.7037465591,2.__7282842677,8.4758437557,11.__1027935904,7.9434273599,7.__8361619299,7.7610621969,7.__4929139614,5.8106133327,5.__9579132527,5.9888473034,6.__5618433959,4.5013708887,1.__9218516244,5.7559805232,5.__2267081177,5.0968196707,4.__8949133597,5.9137964962,4.__2936059427,4.6948533593,3.__4377318427,3.7991617067,4.__1242444467,3.8858731777,3.__9596393887,4.9192685996,4.__6734033563,4.7511846457,4.__4544981945,4.2748693367,3.__411559417,6.6851381985,6.__6744741285,6.9296475385,7.__0136847108,7.1371500908,7.__2719520708,6.6787720528,7.__3530295908,6.8599596928,7.__2216891568,7.4951304208,7.__4404728868,8.1332243958,6.__2736028029,6.963685048,6.__0483763169,5.8653351624,5.__6164044005,6.54979166,5.__8783224469,6.533468297,5.__8553434082,5.7

676662122,6.__267915357,5.22607939

03,3.745459072,6.352470342,5.__4392033722,5.5562602522,5.__3996670482,6.171297855,5.__648779598,5.5653279855,5.__671668653,5.3243595462,5.__879320328,5.859442385,6.__080574272,5.3767159992,6.__170852717,5.3001119472,5.__687201287,5.3573110752,3.__586385579,5.566591422,5.__5104826925,5.916268775,5.__4418422465,5.4037394705,5.__640889612,5.1407657702,4.__5523677017,5.3873769863,3.__601570449,2.978252449,4.__8725960282,4.9817842222,5.__2355359365,5.1227105795,5.__177856607,5.098596533,5.__1891181988,4.9327118245,4.__4632330777,7.4879538737,4.__8591269625,3.1339054377,5.__8472818275,4.6043306952,3.__3542942377,4.7660145915,6.__6679095357,5.51150886,2.__7404344677,5.9332075344,6.__2019594857,5.266709364,5.__4924174224,5.180577724,3.__0277711677,6.2913260157,4.__2862670877,5.5461328154,5.__5809644644,5.1132029296,5.__1904326724,4.8352505633,4.__9641930171,5.1366240426,7.__0699378037,3.1274712477,5.__1487646306,5.2717034197,5.__0200090866,3.0911490977,5.8984613527,5.1973381747,4.

2427530627,6.7293864957,4.__7943011637,5.1130266607,5.__3948779287,4.7124246547,5.2

186371577,2.9723417287 tel:9723417287,2.3171875277,2.8159853427
tel:8159853427,__4.7913513947,4.7863347867
tel:7863347867,3.4531342837,__3.8161332287,5.8431115757,4.__4873126817,5.6577494097,5.__5867970832,9.4583860946,2.__7784615917,5.4279953797,1.__9376872717,5.0813930177,5.__8860618114,6.2411339874,6.__4536904614,6.0972641874,5.__7247963284,5.9823452114,5.__8316140784,5.2398164977,6.__2963392357,5.5864457124,6.__1599995178,5.2609646384,6.__1012355027,6.4129483756,6.__0056487896,5.0106569884,5.__4239402364,6.1148656496,2.__673828844,4.3332873457,3.__2943586634,4.5834393467,7.__278601561,3.5870893269,3.__3299191554,4.1049776549,5.__9256568037,6.2719334873,6.__2594329923,5.5752581689,5.__6058592867,6.1311384893,6.__4726413519,5.8973941434,6.__2572672069,5.9667442136,5.__3965422637,7.2837623985,6.__9586195092,7.1137641952,6.__3682104908,7.8495628418,7.__2245886958,6.2983788278,7.__3509762248,6.9925366658,6.__5600944468,6.936328733,6.__616665943,6.738732443}")

CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

NOTICE: ids: {}

CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not
compatible for
concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 26 at
assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

Thanks for your help. Maybe you need some other facts about my
table?
The whole script I am excecuting is the following. I changed some
things, like adding your code and changing the table name ‘ways’ to
‘cgn_2po_4pgr’:

create or replace function pgr_makeDijkstraMatrix(thetbl text, sqlP
text, OUT dmatrix double precision, OUT ids integer)
as
$body$
declare
sql text;
sql2 text;
r record;
r2 record;
i integer;
j integer;
matrixl double precision;
begin

ids := ‘{}’::integer;
sql:='select node, id-1 as id from '||thetbl;
for r in execute sql loop
sql2:='select id1, array_agg(cost) as arow from (
SELECT id1, id2, cost

FROM pgr_kdijkstraCost(‘’‘||sqlP||’__‘’, '||r.node||

', (select array_agg(node) from ‘||thetbl||’ where

id>‘||r.id <http://r.id> <http://r.id>||’), false, false)

) as foo group by id1 order by id1’;
for r2 in execute sql2 loop
matrixl := ‘{}’;

for i in 1…r.id <http://r.id> <http://r.id> loop

matrixl := array_append(matrixl,
dmatrix[i][r.id <http://r.id>
<http://r.id>+1]);

end loop;
matrixl := array_cat(matrixl, r2.arow);
dmatrix := array_cat(dmatrix, array[matrixl]);
raise notice ‘r2: %’, r2;
raise notice ‘r2.id1: %’, r2.id1;
raise notice ‘ids: %’, ids;

Sorry, I don’t have a running version of this so this is somewhat
guess work.

– ids := ids || r2.id1;
ids := array_cat(ids, r2.id1);

try changing the line above to:

ids := array_cat(ids, array[r2.id1]);

Hi Steve, thank you. Back in office now but I’ll try that later at home.
I’ll let you know and hopefully I get a good result :slight_smile:
Thanks so much.

Carsten

So comment out the old like and rewrite like this.

-Steve

Thanks for all your help Steve,
hope, we’re getting closer! Look, not it returns this:
NOTICE: r2:

(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

ERROR: function array_cat(integer, integer) does not exist

LINE 1: SELECT array_cat(ids, r2.id1)
^
HINT: No function matches the given name and argument types. You might
need to add explicit type casts.
QUERY: SELECT array_cat(ids, r2.id1)
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 31 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: function array_cat(integer, integer) does not exist
SQL Status:42883
Hinweis:No function matches the given name and argument types. You might
need to add explicit type casts.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 31 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

Function does not exist? Still have an idea?
Thanks
Carsten

end loop;
end loop;
end;
$body$
language plpgsql stable cost 10;

create or replace function pgr_tspDijkstra(thetbl text, sql text,
start_id integer, end_id integer default (-1))
returns setof pgr_costResult as
$body$
declare
sid integer;
eid integer;

begin

return query with dm as (
select * from pgr_makeDijkstraMatrix( thetbl, sql )
),
ids as (
select (row_number() over (order by id asc))-1 as rnum, id
from (
select unnest(ids) as id
from dm
) foo
),
t as (

select a.seq, b.rnum, b.id <http://b.id> <http://b.id>

from pgr_tsp(
(select dmatrix from dm),
(select rnum from ids where id=start_id limit
1)::integer,
(case when end_id = -1 then -1 else (select
rnum
from ids where id=end_id limit 1) end)::integer
) a,
ids b

where a.id <http://a.id> <http://a.id>=b.rnum

),
r as (
select array_agg(t.rnum) as rnum from t
)
select t.seq::integer,
t.rnum::integer as id1,
t.id::integer as id2,

dm.dmatrix[r.rnum[t.seq+1]+1][__r.rnum[(t.seq+1)%array_length(__r.rnum,

1)+1]+1]::float8 as cost
from t, dm, r;
end;
$body$
language plpgsql volatile cost 50 rows 50;

create or replace function pgr_tspDijkstraLen(thetbl text, start_id
integer, end_id integer default (-1))
returns setof pgr_costResult as
$body$
begin
return query SELECT * FROM pgr_tspDijkstra(thetbl,
‘SELECT id, source::integer, target::integer,
length::double
precision AS cost FROM cgn_2po_4pgr’,
start_id, end_id);
end;
$body$
language plpgsql stable;

Maybe you’ve got another idea?
Thank you
Carsten

Thanks for you help
Carsten

2014-02-20 16:24 GMT+01:00 Stephen Woodbridge
<woodbri@swoodbridge.com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)
<mailto:woodbri@swoodbridge.__com mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>

<mailto:woodbri@swoodbridge.
mailto:[woodbri@swoodbridge](mailto:woodbri@swoodbridge).____com

<mailto:woodbri@swoodbridge.__com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>>>:

On 2/20/2014 9:41 AM, Stephen Woodbridge wrote:

Hi Carsten,

The functions at

http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql>

<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql>>

<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql>

<http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql>>>
are not part of pgRouting.

You need to ask this question to Ivan the
author of the
original
article.

Sorry, Dose was the original author.

You probably need to add some debug statements
to get a
better
understanding of what the code is doing. For
example in
pgr_makeDijkstraMatrix before the statement:

ids := ids || array[r2.id1];

You could try changing this line to:

ids := ids || r2.id1;

and see if that fixes the problem.

-Steve

Add:

raise notice ‘r2: %’, r2;
raise notice ‘r2.id1: %’, r2.id1;
raise notice ‘ids: %’, ids;

This should show you the progression of how
the array
ids is getting
built as it appears to be compaining about
that in the
error
message.

Hope this helps,
-Steve

On 2/20/2014 9:21 AM, Carsten Hogertz wrote:

Hi everybody, I am new to this list and new to
pgrouting.

I found the following TSP example

http://hardwarefetish.com/513-______pgrouting-dijksta-____travelling-__salesman-problem-____tsp-with-__openstreetmap
<http://hardwarefetish.com/513-____pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap>

<http://hardwarefetish.com/__513-__pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap
<http://hardwarefetish.com/513-__pgrouting-dijksta-travelling-__salesman-problem-tsp-with-__openstreetmap>>

<http://hardwarefetish.com/____513-pgrouting-dijksta-____travelling-salesman-problem-____tsp-with-openstreetmap
<http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap>

<http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap
<http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap>>>

and tried to reproduce the solution.

Unfortunately I always get an error message.
My DB is complaining about one of your
functions.

I got my routing table from osm2po. The
table has
the following
structure:

1;”id”;”integer”
2;”osm_id”;”bigint”
3;”osm_name”;”character varying”
4;”osm_meta”;”character varying”
5;”osm_source_id”;”bigint”
6;”osm_target_id”;”bigint”;
7;”clazz”;”integer”
8;”flags”;”integer”
9;”source”;”integer”
10;”target”;”integer”
11;”length”;”double precision”
12;”kmh”;”integer”
13;”cost”;”double precision”
14;”reverse_cost”;”double precision”
15;”x1″;”double precision”
16;”y1″;”double precision”
17;”x2″;”double precision”
18;”y2″;”double precision”

19;”geom_way”;”geometry(______LineString,4326)”

  • I installed the functions as mentioned
    via SQL
    window in
    pgAdmin3
    (copy&paste then excecute)
  • I create and populate the my_route table
  • When it comes to step 5 and I try

select id,lon,lat from
pgr_tspDijkstraLen(’my_route’, 1260
) dj, my_route rt where dj.id2=rt.node;

my DB warns

ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element
dimensions
are not
compatible for
concatenation.
CONTEXT: PL/pgSQL function
“pgr_makedijkstramatrix”
line 25 at
assignment PL/pgSQL function
“pgr_tspdijkstra” line
8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen”
line 3 at
RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible
arrays SQL
Status:2202E
Detail:Arrays with differing element
dimensions are not
compatible for
concatenation.
Kontext:PL/pgSQL function
“pgr_makedijkstramatrix”
line 25
at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen”
line 3 at
RETURN QUERY

Do you have any idea what went wrong? I really
really need your
solutionget working. I would appreciate a lot.

Thanks for your help.

PS: this text is a copy of what I wrote on
on the
comment
site of the
blog where I found the solution.

BR
Carsten


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
<mailto:Pgrouting-users@lists.
mailto:[Pgrouting-users@lists](mailto:Pgrouting-users@lists).
osgeo.org <http://osgeo.org>
<mailto:Pgrouting-users@lists.
osgeo.org
mailto:[Pgrouting-users@lists.osgeo.org](mailto:Pgrouting-users@lists.osgeo.org)>>
http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users>

<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users>>

<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users>

<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
<http://lists.osgeo.org/mailman/listinfo/pgrouting-users>>>


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
<mailto:Pgrouting-users@lists.
mailto:[Pgrouting-users@lists](mailto:Pgrouting-users@lists).
osgeo.org <http://osgeo.org>
<mailto:Pgrouting-users@lists.
osgeo.org
mailto:[Pgrouting-users@lists.osgeo.org](mailto:Pgrouting-users@lists.osgeo.org)>>
http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users>

<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users>>

<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users>

<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
<http://lists.osgeo.org/mailman/listinfo/pgrouting-users>>>


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
<mailto:Pgrouting-users@lists.
mailto:[Pgrouting-users@lists](mailto:Pgrouting-users@lists).
osgeo.org <http://osgeo.org>
<mailto:Pgrouting-users@lists.
osgeo.org
mailto:[Pgrouting-users@lists.osgeo.org](mailto:Pgrouting-users@lists.osgeo.org)>>
http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users>

<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users>>

<http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users>

<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
<http://lists.osgeo.org/mailman/listinfo/pgrouting-users>>>


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.____org
<mailto:Pgrouting-users@lists.__osgeo.org
mailto:[Pgrouting-users@lists.osgeo.org](mailto:Pgrouting-users@lists.osgeo.org)>
http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users>

<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
<http://lists.osgeo.org/mailman/listinfo/pgrouting-users>>


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.____org
<mailto:Pgrouting-users@lists.__osgeo.org
mailto:[Pgrouting-users@lists.osgeo.org](mailto:Pgrouting-users@lists.osgeo.org)>
http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users>

<http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
<http://lists.osgeo.org/mailman/listinfo/pgrouting-users>>


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.__org
mailto:[Pgrouting-users@lists.osgeo.org](mailto:Pgrouting-users@lists.osgeo.org)
http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
<http://lists.osgeo.org/mailman/listinfo/pgrouting-users>


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.__org
mailto:[Pgrouting-users@lists.osgeo.org](mailto:Pgrouting-users@lists.osgeo.org)
http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
<http://lists.osgeo.org/mailman/listinfo/pgrouting-users>


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users


Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

I'm busy for the next few days so I will not have time to look at it until later this week.

What version of postgresql are you running?

select * from version();

I would google "postgresql array functions" and read up on these.There is a function that will tell you the dimensions of an array and maybe you need to print out some more notices to figure out what it is expecting.

Maybe someone else on the list wants to take a crack at this.

Thanks,
   -Steve

On 2/25/2014 3:14 PM, Carsten Hogertz wrote:

Hi Steve,
have been busy the last days so I only check your Thursday's solution
right now. Still not working.
My function looks like this:

create or replace function pgr_makeDijkstraMatrix(thetbl text, sqlP
text, OUT dmatrix double precision, OUT ids integer)
   as
$body$
declare
     sql text;
     sql2 text;
     r record;
     r2 record;
     i integer;
     j integer;
     matrixl double precision;
begin

ids := '{}'::integer;
     sql:='select node, id-1 as id from '||thetbl;
     for r in execute sql loop
             sql2:='select id1, array_agg(cost) as arow from (
           SELECT id1, id2, cost
           FROM pgr_kdijkstraCost('''||sqlP||''', '||r.node||
               ', (select array_agg(node) from '||thetbl||' where
id>'||r.id <http://r.id>||'), false, false)
          ) as foo group by id1 order by id1';
         for r2 in execute sql2 loop
         matrixl := '{}';
         for i in 1..r.id <http://r.id> loop
                   matrixl := array_append(matrixl, dmatrix[i][r.id
<http://r.id>+1]);
                 end loop;
                 matrixl := array_cat(matrixl, r2.arow);
             dmatrix := array_cat(dmatrix, array[matrixl]);
raise notice 'r2: %', r2;
raise notice 'r2.id1: %', r2.id1;
raise notice 'ids: %', ids;
            --ids := ids || r2.id1;
ids := array_cat(ids, array[r2.id1]);
         end loop;
     end loop;
end;
$body$
language plpgsql stable cost 10;

create or replace function pgr_tspDijkstra(thetbl text, sql text,
start_id integer, end_id integer default (-1))
     returns setof pgr_costResult as
$body$
declare
     sid integer;
     eid integer;

begin

     return query with dm as (
         select * from pgr_makeDijkstraMatrix( thetbl, sql )
     ),
     ids as (
         select (row_number() over (order by id asc))-1 as rnum, id
           from (
                 select unnest(ids) as id
                   from dm
                 ) foo
     ),
     t as (
         select a.seq, b.rnum, b.id <http://b.id>
           from pgr_tsp(
                    (select dmatrix from dm),
                    (select rnum from ids where id=start_id limit
1)::integer,
                    (case when end_id = -1 then -1 else (select rnum
from ids where id=end_id limit 1) end)::integer
                ) a,
                ids b
          where a.id <http://a.id>=b.rnum
     ),
     r as (
         select array_agg(t.rnum) as rnum from t
     )
     select t.seq::integer,
            t.rnum::integer as id1,
            t.id::integer as id2,

dm.dmatrix[r.rnum[t.seq+1]+1][r.rnum[(t.seq+1)%array_length(r.rnum,
1)+1]+1]::float8 as cost
       from t, dm, r;
end;
$body$
language plpgsql volatile cost 50 rows 50;

create or replace function pgr_tspDijkstraLen(thetbl text, start_id
integer, end_id integer default (-1))
     returns setof pgr_costResult as
$body$
begin
      return query SELECT * FROM pgr_tspDijkstra(thetbl,
           'SELECT id, source::integer, target::integer, length::double
precision AS cost FROM cgn_2po_4pgr',
            start_id, end_id);
end;
$body$
language plpgsql stable;

AND the error I am getting:
NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 26 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible arrays
SQL Status:2202E
Detail:Arrays with differing element dimensions are not compatible for
concatenation.
Kontext:PL/pgSQL function "pgr_makedijkstramatrix" line 26 at assignment
PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

HOW comes? I really don't know what to do.
May you be so kind and try to help again?
Thanks
Carsten

2014-02-21 9:36 GMT+01:00 Carsten Hogertz <carsten.hogertz@gmail.com
<mailto:carsten.hogertz@gmail.com>>:

    2014-02-20 23:25 GMT+01:00 Stephen Woodbridge
    <woodbri@swoodbridge.com <mailto:woodbri@swoodbridge.com>>:

        On 2/20/2014 4:59 PM, Carsten Hogertz wrote:

            2014-02-20 22:47 GMT+01:00 Stephen Woodbridge
            <woodbri@swoodbridge.com <mailto:woodbri@swoodbridge.com>
            <mailto:woodbri@swoodbridge.__com
            <mailto:woodbri@swoodbridge.com>>>:

                 On 2/20/2014 4:39 PM, Carsten Hogertz wrote:

                     2014-02-20 22:20 GMT+01:00 Stephen Woodbridge
                     <woodbri@swoodbridge.com
            <mailto:woodbri@swoodbridge.com>
            <mailto:woodbri@swoodbridge.__com
            <mailto:woodbri@swoodbridge.com>>
                     <mailto:woodbri@swoodbridge.
            <mailto:woodbri@swoodbridge.>____com
                     <mailto:woodbri@swoodbridge.__com
            <mailto:woodbri@swoodbridge.com>>>>:

                          On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

                              Thanks Steve,

                              coming home and adding your lines it
            returns with an error:

                              NOTICE: r2:
                              (34304,"{0,5.3602868897 <tel:3602868897>
            <tel:3602868897 <tel:3602868897>>
                     <tel:3602868897 <tel:3602868897> <tel:3602868897
            <tel:3602868897>>>,4.6782573327 <tel:6782573327>
            <tel:6782573327 <tel:6782573327>>
                              <tel:6782573327 <tel:6782573327>
            <tel:6782573327 <tel:6782573327>>>,5.6026971537 <tel:6026971537>
                     <tel:6026971537 <tel:6026971537>> <tel:6026971537
            <tel:6026971537> <tel:6026971537
            <tel:6026971537>>>,5.2062747797 <tel:2062747797>
                     <tel:2062747797 <tel:2062747797>>
                              <tel:2062747797 <tel:2062747797>

                     <tel:2062747797
            <tel:2062747797>>>,5.__0497181017,5.3147719797
            <tel:3147719797> <tel:3147719797 <tel:3147719797>>
                              <tel:3147719797 <tel:3147719797>
                     <tel:3147719797
            <tel:3147719797>>>,5.__0700916462,4.____3220066797,4.__8593618137
            <tel:8593618137>
                     <tel:8593618137 <tel:8593618137>>
                              <tel:8593618137 <tel:8593618137>
                     <tel:8593618137
            <tel:8593618137>>>,4.0002255227,6.______055760592,12.5155379824
            <tel:5155379824>
                     <tel:5155379824 <tel:5155379824>>
                              <tel:5155379824 <tel:5155379824>
                     <tel:5155379824
            <tel:5155379824>>>,9.__3170226155,8.____72783427270001,5.__9460446587,____3.0868131677,5.__1839796057,__5.__2301666167,2.__1211198847,__5.__7037465591
            <tel:7037465591>
                     <tel:7037465591 <tel:7037465591>>
                              <tel:7037465591 <tel:7037465591>

                     <tel:7037465591
            <tel:7037465591>>>,2.__7282842677,8.4758437557
            <tel:4758437557> <tel:4758437557 <tel:4758437557>>
                              <tel:4758437557 <tel:4758437557>
                     <tel:4758437557
            <tel:4758437557>>>,11.__1027935904,7.____9434273599,7.__8361619299,7.____7610621969,7.__4929139614,5.____8106133327
            <tel:8106133327>
                     <tel:8106133327 <tel:8106133327>>
                              <tel:8106133327 <tel:8106133327>
                     <tel:8106133327
            <tel:8106133327>>>,5.__9579132527,5.____9888473034,6.__5618433959
            <tel:5618433959>
                     <tel:5618433959 <tel:5618433959>>
                              <tel:5618433959 <tel:5618433959>
            <tel:5618433959 <tel:5618433959>>>,4.5013708887 <tel:5013708887>
                     <tel:5013708887 <tel:5013708887>>
                              <tel:5013708887 <tel:5013708887>
                     <tel:5013708887
            <tel:5013708887>>>,1.__9218516244,5.____7559805232,5.__2267081177
            <tel:2267081177>
                     <tel:2267081177 <tel:2267081177>>
                              <tel:2267081177 <tel:2267081177>
                     <tel:2267081177
            <tel:2267081177>>>,5.0968196707,4.______8949133597,5.9137964962
            <tel:9137964962>
                     <tel:9137964962 <tel:9137964962>>
                              <tel:9137964962 <tel:9137964962>
                     <tel:9137964962
            <tel:9137964962>>>,4.__2936059427,4.____6948533593,3.__4377318427
            <tel:4377318427>
                     <tel:4377318427 <tel:4377318427>>
                              <tel:4377318427 <tel:4377318427>
                     <tel:4377318427
            <tel:4377318427>>>,3.7991617067,4.______1242444467,3.8858731777,3.______9596393887,4.9192685996
            <tel:9192685996>
                     <tel:9192685996 <tel:9192685996>>
                              <tel:9192685996 <tel:9192685996>
                     <tel:9192685996
            <tel:9192685996>>>,4.__6734033563,4.____7511846457,4.__4544981945,4.____2748693367,3.__411559417,6.____6851381985,6.__6744741285,6.____9296475385
            <tel:9296475385>
                     <tel:9296475385
            <tel:9296475385>>,7.__0136847108,7.____1371500908,7.__2719520708,6.__6787720528
            <tel:6787720528>
                     <tel:6787720528
            <tel:6787720528>>,7.__3530295908,6.__8599596928 <tel:8599596928>
                     <tel:8599596928
            <tel:8599596928>>,7.__2216891568,7.____4951304208,7.__4404728868
            <tel:4404728868>
                     <tel:4404728868
            <tel:4404728868>>,8.__1332243958,6.____2736028029,6.__963685048,6.____0483763169,5.__8653351624
            <tel:8653351624>
                     <tel:8653351624 <tel:8653351624>>,5.__6164044005
            <tel:6164044005>
                     <tel:6164044005
            <tel:6164044005>>,6.__54979166,5.__8783224469 <tel:8783224469>
                     <tel:8783224469
            <tel:8783224469>>,6.__533468297,5.__8553434082 <tel:8553434082>
                     <tel:8553434082
            <tel:8553434082>>,5.__7676662122,6.____267915357,5.__22607939

            03,3.745459072,6.352470342,5.______4392033722,5.5562602522,5.______3996670482,6.171297855,5.______648779598,5.5653279855,5.______671668653,5.3243595462,5.______879320328,5.859442385
            <tel:5.859442385>
                     <tel:5.859442385
            <tel:5.859442385>>,6.____080574272,5.__3767159992,6.____170852717,5.__3001119472,5.____687201287,5.__3573110752,3.____586385579,5.__566591422,5.____5104826925
            <tel:5104826925>,5.__916268775,5.____4418422465,5.__4037394705
            <tel:4037394705>,5.____640889612,5.__1407657702,4.____5523677017,5.__3873769863,3.____601570449,2.__978252449,4.____8725960282
            <tel:8725960282>,4.__9817842222,5.____2355359365,5.__1227105795,5.____177856607,5.__098596533,5.____1891181988,4.__9327118245,4.____4632330777,7.__4879538737,4.____8591269625,3.__1339054377,5.____8472818275
            <tel:8472818275>,4.__6043306952
            <tel:6043306952>,3.____3542942377,4.__7660145915,6.____6679095357
            <tel:6679095357>,5.__51150886,2.____7404344677
            <tel:7404344677>,5.__9332075344,6.____2019594857
            <tel:2019594857>,5.__266709364,5.____4924174224,5.__180577724,3.____0277711677,6.__2913260157,4.____2862670877,5.__5461328154,5.____5809644644
            <tel:5809644644>,5.__1132029296,5.____1904326724,4.__8352505633
            <tel:8352505633>,4.____9641930171,5.__1366240426,7.____0699378037,3.__1274712477,5.____1487646306,5.__2717034197,5.____0200090866,3.__0911490977,5.____8984613527,5.__1973381747,4.__

            2427530627,6.7293864957,4.______7943011637,5.1130266607,5.______3948779287,4.7124246547
            <tel:7124246547>,5.2

                          186371577,2.9723417287 <tel:9723417287>
            <tel:9723417287 <tel:9723417287>> <tel:9723417287
            <tel:9723417287>

                     <tel:9723417287
            <tel:9723417287>>>,2.3171875277,2.8159853427
            <tel:8159853427> <tel:8159853427 <tel:8159853427>>
                          <tel:8159853427 <tel:8159853427>

                     <tel:8159853427
            <tel:8159853427>>>,__4.7913513947,4.7863347867
            <tel:7863347867> <tel:7863347867 <tel:7863347867>>
                          <tel:7863347867 <tel:7863347867>
                     <tel:7863347867
            <tel:7863347867>>>,3.4531342837,__3.____8161332287,5.8431115757,4.______4873126817,5.6577494097
            <tel:6577494097>,5.______5867970832
            <tel:5867970832>,9.4583860946
            <tel:4583860946>,2.______7784615917
            <tel:7784615917>,5.4279953797,1.______9376872717
            <tel:9376872717>,5.0813930177,5.______8860618114,6.2411339874,6.______4536904614,6.0972641874,5.______7247963284
            <tel:7247963284>,5.9823452114,5.______8316140784
            <tel:8316140784>,5.2398164977
            <tel:2398164977>,6.______2963392357,5.5864457124,6.______1599995178,5.2609646384,6.______1012355027,6.4129483756,6.______0056487896,5.0106569884,5.______4239402364,6.1148656496,2.______673828844,4.3332873457,3.______2943586634,4.5834393467,7.______278601561,3.5870893269,3.______3299191554,4.1049776549,5.______9256568037,6.2719334873,6.______2594329923,5.5752581689,5.______6058592867,6.1311384893,6.______4726413519,5.8973941434,6.______2572672069,5.9667442136,5.______3965422637,7.2837623985,6.______9586195092,7.1137641952,6.______3682104908,7.8495628418,7.______2245886958,6.2983788278,7.______3509762248,6.9925366658,6.______5600944468,6.936328733,6.______616665943,6.738732443}")

                              CONTEXT: PL/pgSQL function
            "pgr_tspdijkstra" line 8 at
                     RETURN QUERY
                              PL/pgSQL function "pgr_tspdijkstralen"
            line 3 at RETURN
                     QUERY
                              NOTICE: r2.id1: 34304
                              CONTEXT: PL/pgSQL function
            "pgr_tspdijkstra" line 8 at
                     RETURN QUERY
                              PL/pgSQL function "pgr_tspdijkstralen"
            line 3 at RETURN
                     QUERY
                              NOTICE: ids: <NULL>
                              CONTEXT: PL/pgSQL function
            "pgr_tspdijkstra" line 8 at
                     RETURN QUERY
                              PL/pgSQL function "pgr_tspdijkstralen"
            line 3 at RETURN
                     QUERY
                              ERROR: cannot concatenate incompatible arrays
                              DETAIL: Arrays with differing element
            dimensions are not
                              compatible for
                              concatenation.
                              CONTEXT: PL/pgSQL function
            "pgr_makedijkstramatrix"
                     line 25 at
                              assignment
                              PL/pgSQL function "pgr_tspdijkstra" line 8
            at RETURN QUERY
                              PL/pgSQL function "pgr_tspdijkstralen"
            line 3 at RETURN
                     QUERY

                              I tried to write to Dose but he didn't
            reply yet.
                              Does anyone have a clue?

                          Try adding the follow line after the "begin" line:

                              ids := '{}'::integer;

                          This should make sure the ids is initialized
            as an empty
                     array of
                          integers.

                          -Steve

                     Again:
                     NOTICE: r2:
                     (34304,"{0,5.3602868897 <tel:3602868897>
            <tel:3602868897 <tel:3602868897>>,4.6782573327 <tel:6782573327>
                     <tel:6782573327 <tel:6782573327>>,5.6026971537
            <tel:6026971537> <tel:6026971537
            <tel:6026971537>>,5.2062747797 <tel:2062747797>
                     <tel:2062747797
            <tel:2062747797>>,5.__0497181017,5.3147719797
            <tel:3147719797>,5.____0700916462,4.3220066797,4.__8593618137 <tel:8593618137>,__4.0002255227,6.__055760592,12.__5155379824,9.__3170226155,8.__72783427270001,5.__9460446587,__3.0868131677,5.__1839796057,5.__2301666167,2.__1211198847,5.__7037465591,2.__7282842677,8.__4758437557,11.__1027935904,7.__9434273599,7.__8361619299,7.__7610621969,7.__4929139614,5.__8106133327,5.__9579132527,5.__9888473034,6.__5618433959,4.__5013708887,1.__9218516244,5.__7559805232,5.__2267081177,5.__0968196707,4.__8949133597,5.__9137964962,4.__2936059427,4.__6948533593,3.__4377318427,3.__7991617067,4.__1242444467,3.__8858731777,3.__9596393887,4.__9192685996,4.__6734033563,4.__7511846457,4.__4544981945,4.__2748693367,3.__411559417,6.__6851381985,6.__6744741285,6.__9296475385,7.__0136847108,7.__1371500908,7.__2719520708,6.__6787720528,7.__3530295908,6.__8599596928,7.__2216891568,7.__4951304208,7.__4404728868,8.__1332243958,6.__2736028029,6.__963685048,6.__0483763169,5.__8653351624,5.__6164044005,6

.__54979166,5.__8783224469,6.__533468297,5.__8553434082,5.7

        676662122,6.__267915357,5.__22607939

            03,3.745459072,6.352470342,5.____4392033722,5.5562602522,5.____3996670482,6.171297855,5.____648779598,5.5653279855,5.____671668653,5.3243595462,5.____879320328,5.859442385,6.____080574272,5.3767159992,6.____170852717,5.3001119472,5.____687201287,5.3573110752,3.____586385579,5.566591422,5.____5104826925,5.916268775,5.____4418422465,5.4037394705,5.____640889612,5.1407657702,4.____5523677017,5.3873769863,3.____601570449,2.978252449,4.____8725960282,4.9817842222,5.____2355359365,5.1227105795,5.____177856607,5.098596533,5.____1891181988,4.9327118245,4.____4632330777,7.4879538737,4.____8591269625,3.1339054377,5.____8472818275,4.6043306952,3.____3542942377,4.7660145915,6.____6679095357,5.51150886,2.____7404344677,5.9332075344,6.____2019594857,5.266709364,5.____4924174224,5.180577724,3.____0277711677,6.2913260157,4.____2862670877,5.5461328154,5.____5809644644,5.1132029296,5.____1904326724,4.8352505633,4.____9641930171,5.1366240426,7.____0699378037,3.1274712477,5.____1487646306

,5.2717034197,5.____0200090866,3.0911490977,5.____8984613527,5.1973381747,4.__

        2427530627,6.7293864957,4.____7943011637,5.1130266607,5.____3948779287,4.7124246547,5.2

                 186371577,2.9723417287 <tel:9723417287> <tel:9723417287
            <tel:9723417287>>,2.3171875277,2.8159853427 <tel:8159853427>
                 <tel:8159853427
            <tel:8159853427>>,__4.7913513947,4.7863347867 <tel:7863347867>
                 <tel:7863347867
            <tel:7863347867>>,3.4531342837,__3.__8161332287,5.8431115757,4.____4873126817,5.6577494097,5.____5867970832,9.4583860946,2.____7784615917,5.4279953797,1.____9376872717,5.0813930177,5.____8860618114,6.2411339874,6.____4536904614,6.0972641874,5.____7247963284,5.9823452114,5.____8316140784,5.2398164977,6.____2963392357,5.5864457124,6.____1599995178,5.2609646384,6.____1012355027,6.4129483756,6.____0056487896,5.0106569884,5.____4239402364,6.1148656496,2.____673828844,4.3332873457,3.____2943586634,4.5834393467,7.____278601561,3.5870893269,3.____3299191554,4.1049776549,5.____9256568037,6.2719334873,6.____2594329923,5.5752581689,5.____6058592867,6.1311384893,6.____4726413519,5.8973941434,6.____2572672069,5.9667442136,5.____3965422637,7.2837623985,6.____9586195092,7.1137641952,6.____3682104908,7.8495628418,7.____2245886958,6.2983788278,7.____3509762248,6.9925366658,6.____5600944468,6.936328733,6.____616665943,6.738732443}")

                     CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line
            8 at RETURN QUERY
                     PL/pgSQL function "pgr_tspdijkstralen" line 3 at
            RETURN QUERY
                     NOTICE: r2.id1: 34304
                     CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line
            8 at RETURN QUERY
                     PL/pgSQL function "pgr_tspdijkstralen" line 3 at
            RETURN QUERY
                     NOTICE: ids: {}

                     CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line
            8 at RETURN QUERY
                     PL/pgSQL function "pgr_tspdijkstralen" line 3 at
            RETURN QUERY
                     ERROR: cannot concatenate incompatible arrays
                     DETAIL: Arrays with differing element dimensions
            are not
                     compatible for
                     concatenation.
                     CONTEXT: PL/pgSQL function
            "pgr_makedijkstramatrix" line 26 at
                     assignment
                     PL/pgSQL function "pgr_tspdijkstra" line 8 at
            RETURN QUERY
                     PL/pgSQL function "pgr_tspdijkstralen" line 3 at
            RETURN QUERY

                     Thanks for your help. Maybe you need some other
            facts about my
                     table?
                     The whole script I am excecuting is the following.
            I changed some
                     things, like adding your code and changing the
            table name 'ways' to
                     'cgn_2po_4pgr':

                     create or replace function
            pgr_makeDijkstraMatrix(thetbl text, sqlP
                     text, OUT dmatrix double precision, OUT ids
            integer)
                         as
                     $body$
                     declare
                           sql text;
                           sql2 text;
                           r record;
                           r2 record;
                           i integer;
                           j integer;
                           matrixl double precision;
                     begin

                          ids := '{}'::integer;
                           sql:='select node, id-1 as id from '||thetbl;
                           for r in execute sql loop
                                   sql2:='select id1, array_agg(cost) as
            arow from (
                                 SELECT id1, id2, cost
                                 FROM
            pgr_kdijkstraCost('''||sqlP||'____'', '||r.node||

                                     ', (select array_agg(node) from
            '||thetbl||' where
                     id>'||r.id <http://r.id> <http://r.id>
            <http://r.id>||'), false, false)

                                ) as foo group by id1 order by id1';
                               for r2 in execute sql2 loop
                               matrixl := '{}';
                               for i in 1..r.id <http://r.id>
            <http://r.id> <http://r.id> loop

                                         matrixl := array_append(matrixl,
                     dmatrix[i][r.id <http://r.id> <http://r.id>
                     <http://r.id>+1]);

                                       end loop;
                                       matrixl := array_cat(matrixl,
            r2.arow);
                                   dmatrix := array_cat(dmatrix,
            array[matrixl]);
                                   raise notice 'r2: %', r2;
                     raise notice 'r2.id1: %', r2.id1;
                     raise notice 'ids: %', ids;

                 Sorry, I don't have a running version of this so this
            is somewhat
                 guess work.

                               -- ids := ids || r2.id1;
                                 ids := array_cat(ids, r2.id1);

        try changing the line above to:

                               ids := array_cat(ids, array[r2.id1]);

    Hi Steve, thank you. Back in office now but I'll try that later at home.
    I'll let you know and hopefully I get a good result :slight_smile:
    Thanks so much.
    Carsten

                 So comment out the old like and rewrite like this.

                 -Steve

            Thanks for all your help Steve,
            hope, we're getting closer! Look, not it returns this:
            NOTICE: r2:
            (34304,"{0,5.3602868897 <tel:3602868897>,4.6782573327
            <tel:6782573327>,5.6026971537 <tel:6026971537>,5.2062747797
            <tel:2062747797>,5.__0497181017,5.3147719797,5.__0700916462,4.3220066797,4.__8593618137,4.0002255227,6.__055760592,12.5155379824,9.__3170226155,8.72783427270001,5.__9460446587,3.0868131677,5.__1839796057,5.2301666167,2.__1211198847,5.7037465591,2.__7282842677,8.4758437557,11.__1027935904,7.9434273599,7.__8361619299,7.7610621969,7.__4929139614,5.8106133327,5.__9579132527,5.9888473034,6.__5618433959,4.5013708887,1.__9218516244,5.7559805232,5.__2267081177,5.0968196707,4.__8949133597,5.9137964962,4.__2936059427,4.6948533593,3.__4377318427,3.7991617067,4.__1242444467,3.8858731777,3.__9596393887,4.9192685996,4.__6734033563,4.7511846457,4.__4544981945,4.2748693367,3.__411559417,6.6851381985,6.__6744741285,6.9296475385,7.__0136847108,7.1371500908,7.__2719520708,6.6787720528,7.__3530295908,6.8599596928,7.__2216891568,7.4951304208,7.__4404728868,8.1332243958,6.__2736028029,6.963685048,6.__0483763169,5.8653351624,5.__6164044005,6.54979166,5.__8783224469,6.533468297,5.__8553434082

,5.7676662122,6.__267915357,5.22607939

        03,3.745459072,6.352470342,5.__4392033722,5.5562602522,5.__3996670482,6.171297855,5.__648779598,5.5653279855,5.__671668653,5.3243595462,5.__879320328,5.859442385,6.__080574272,5.3767159992,6.__170852717,5.3001119472,5.__687201287,5.3573110752,3.__586385579,5.566591422,5.__5104826925,5.916268775,5.__4418422465,5.4037394705,5.__640889612,5.1407657702,4.__5523677017,5.3873769863,3.__601570449,2.978252449,4.__8725960282,4.9817842222,5.__2355359365,5.1227105795,5.__177856607,5.098596533,5.__1891181988,4.9327118245,4.__4632330777,7.4879538737,4.__8591269625,3.1339054377,5.__8472818275,4.6043306952,3.__3542942377,4.7660145915,6.__6679095357,5.51150886,2.__7404344677,5.9332075344,6.__2019594857,5.266709364,5.__4924174224,5.180577724,3.__0277711677,6.2913260157,4.__2862670877,5.5461328154,5.__5809644644,5.1132029296,5.__1904326724,4.8352505633,4.__9641930171,5.1366240426,7.__0699378037,3.1274712477,5.__1487646306,5.2717034197,5.__0200090866,3.0911490977,5.__8984613527,5.1973381747,

4.__2427530627,6.7293864957,4.__7943011637,5.1130266607,5.__3948779287,4.7124246547,5.2

        186371577,2.9723417287
        <tel:9723417287>,2.3171875277,2.8159853427
        <tel:8159853427>,__4.7913513947,4.7863347867
        <tel:7863347867>,3.4531342837,__3.8161332287,5.8431115757,4.__4873126817,5.6577494097,5.__5867970832,9.4583860946,2.__7784615917,5.4279953797,1.__9376872717,5.0813930177,5.__8860618114,6.2411339874,6.__4536904614,6.0972641874,5.__7247963284,5.9823452114,5.__8316140784,5.2398164977,6.__2963392357,5.5864457124,6.__1599995178,5.2609646384,6.__1012355027,6.4129483756,6.__0056487896,5.0106569884,5.__4239402364,6.1148656496,2.__673828844,4.3332873457,3.__2943586634,4.5834393467,7.__278601561,3.5870893269,3.__3299191554,4.1049776549,5.__9256568037,6.2719334873,6.__2594329923,5.5752581689,5.__6058592867,6.1311384893,6.__4726413519,5.8973941434,6.__2572672069,5.9667442136,5.__3965422637,7.2837623985,6.__9586195092,7.1137641952,6.__3682104908,7.8495628418,7.__2245886958,6.2983788278,7.__3509762248,6.9925366658,6.__5600944468,6.936328733,6.__616665943,6.738732443}")

            CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
            RETURN QUERY
            PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
            NOTICE: r2.id1: 34304
            CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
            RETURN QUERY
            PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY
            NOTICE: ids: {}
            CONTEXT: PL/pgSQL function "pgr_tspdijkstra" line 8 at
            RETURN QUERY
            PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

            ERROR: function array_cat(integer, integer) does not exist

            LINE 1: SELECT array_cat(ids, r2.id1)
                             ^
            HINT: No function matches the given name and argument
            types. You might
            need to add explicit type casts.
            QUERY: SELECT array_cat(ids, r2.id1)
            CONTEXT: PL/pgSQL function "pgr_makedijkstramatrix" line 31
            at assignment
            PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
            PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

            ********** Fehler **********

            ERROR: function array_cat(integer, integer) does not exist
            SQL Status:42883
            Hinweis:No function matches the given name and argument
            types. You might
            need to add explicit type casts.
            Kontext:PL/pgSQL function "pgr_makedijkstramatrix" line 31
            at assignment
            PL/pgSQL function "pgr_tspdijkstra" line 8 at RETURN QUERY
            PL/pgSQL function "pgr_tspdijkstralen" line 3 at RETURN QUERY

            Function does not exist? Still have an idea?
            Thanks
            Carsten

                               end loop;
                           end loop;
                     end;
                     $body$
                     language plpgsql stable cost 10;

                     create or replace function pgr_tspDijkstra(thetbl
            text, sql text,
                     start_id integer, end_id integer default (-1))
                           returns setof pgr_costResult as
                     $body$
                     declare
                           sid integer;
                           eid integer;

                     begin

                           return query with dm as (
                               select * from pgr_makeDijkstraMatrix(
            thetbl, sql )
                           ),
                           ids as (
                               select (row_number() over (order by id
            asc))-1 as rnum, id
                                 from (
                                       select unnest(ids) as id
                                         from dm
                                       ) foo
                           ),
                           t as (
                               select a.seq, b.rnum, b.id <http://b.id>
            <http://b.id> <http://b.id>

                                 from pgr_tsp(
                                          (select dmatrix from dm),
                                          (select rnum from ids where
            id=start_id limit
                     1)::integer,
                                          (case when end_id = -1 then -1
            else (select
                     rnum
                     from ids where id=end_id limit 1) end)::integer
                                      ) a,
                                      ids b
                                where a.id <http://a.id> <http://a.id>
            <http://a.id>=b.rnum

                           ),
                           r as (
                               select array_agg(t.rnum) as rnum from t
                           )
                           select t.seq::integer,
                                  t.rnum::integer as id1,
                                  t.id::integer as id2,

            dm.dmatrix[r.rnum[t.seq+1]+1][____r.rnum[(t.seq+1)%array___length(__r.rnum,

                     1)+1]+1]::float8 as cost
                             from t, dm, r;
                     end;
                     $body$
                     language plpgsql volatile cost 50 rows 50;

                     create or replace function
            pgr_tspDijkstraLen(thetbl text, start_id
                     integer, end_id integer default (-1))
                           returns setof pgr_costResult as
                     $body$
                     begin
                            return query SELECT * FROM
            pgr_tspDijkstra(thetbl,
                                 'SELECT id, source::integer,
            target::integer,
                     length::double
                     precision AS cost FROM cgn_2po_4pgr',
                                  start_id, end_id);
                     end;
                     $body$
                     language plpgsql stable;

                     Maybe you've got another idea?
                     Thank you
                     Carsten

                              Thanks for you help
                              Carsten

                              2014-02-20 16:24 GMT+01:00 Stephen Woodbridge
                              <woodbri@swoodbridge.com
            <mailto:woodbri@swoodbridge.com>
                     <mailto:woodbri@swoodbridge.__com
            <mailto:woodbri@swoodbridge.com>>
                     <mailto:woodbri@swoodbridge.
            <mailto:woodbri@swoodbridge.>____com
            <mailto:woodbri@swoodbridge.__com
            <mailto:woodbri@swoodbridge.com>>>
                              <mailto:woodbri@swoodbridge
            <mailto:woodbri@swoodbridge>.
                     <mailto:woodbri@swoodbridge
            <mailto:woodbri@swoodbridge>.>______com

                              <mailto:woodbri@swoodbridge.
            <mailto:woodbri@swoodbridge.>____com
                     <mailto:woodbri@swoodbridge.__com
            <mailto:woodbri@swoodbridge.com>>>>>:

                                   On 2/20/2014 9:41 AM, Stephen
            Woodbridge wrote:

                                       Hi Carsten,

                                       The functions at
            http://dose.0wnz.at/scripts/________sql/pgroute_tspDijkstra.__sql
            <http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql&gt;

            <http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
            <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql&gt;\_\_&gt;

            <http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
            <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql&gt;

            <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
            <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;&gt;&gt;

            <http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
            <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql&gt;

            <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
            <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;&gt;

            <http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
            <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql&gt;

            <http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql
            <http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql&gt;&gt;&gt;&gt;
                                       are not part of pgRouting.

                                       You need to ask this question to
            Ivan the
                     author of the
                              original
                                       article.

                                   Sorry, Dose was the original author.

                                       You probably need to add some
            debug statements
                     to get a
                              better
                                       understanding of what the code is
            doing. For
                     example in
                                       pgr_makeDijkstraMatrix before the
            statement:

                                       ids := ids || array[r2.id1];

                                   You could try changing this line to:

                                   ids := ids || r2.id1;

                                   and see if that fixes the problem.

                                   -Steve

                                       Add:

                                       raise notice 'r2: %', r2;
                                       raise notice 'r2.id1: %', r2.id1;
                                       raise notice 'ids: %', ids;

                                       This should show you the
            progression of how
                     the array
                              ids is getting
                                       built as it appears to be
            compaining about
                     that in the
                              error
                                       message.

                                       Hope this helps,
                                           -Steve

                                       On 2/20/2014 9:21 AM, Carsten
            Hogertz wrote:

                                           Hi everybody, I am new to
            this list and new to
                              pgrouting.

                                           I found the following TSP example
            http://hardwarefetish.com/513-________pgrouting-dijksta-______travelling-__salesman-problem-______tsp-with-__openstreetmap
            <http://hardwarefetish.com/513-______pgrouting-dijksta-____travelling-__salesman-problem-____tsp-with-__openstreetmap&gt;

            <http://hardwarefetish.com/__513-____pgrouting-dijksta-____travelling-__salesman-problem-____tsp-with-__openstreetmap
            <http://hardwarefetish.com/513-____pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap&gt;&gt;

            <http://hardwarefetish.com/____513-__pgrouting-dijksta-____travelling-__salesman-problem-____tsp-with-__openstreetmap
            <http://hardwarefetish.com/__513-__pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap&gt;

            <http://hardwarefetish.com/__513-__pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap
            <http://hardwarefetish.com/513-__pgrouting-dijksta-travelling-__salesman-problem-tsp-with-__openstreetmap&gt;&gt;&gt;

            <http://hardwarefetish.com/______513-pgrouting-dijksta-______travelling-salesman-problem-______tsp-with-openstreetmap
            <http://hardwarefetish.com/____513-pgrouting-dijksta-____travelling-salesman-problem-____tsp-with-openstreetmap&gt;

            <http://hardwarefetish.com/____513-pgrouting-dijksta-____travelling-salesman-problem-____tsp-with-openstreetmap
            <http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap&gt;&gt;

            <http://hardwarefetish.com/____513-pgrouting-dijksta-____travelling-salesman-problem-____tsp-with-openstreetmap
            <http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap&gt;

            <http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap
            <http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap&gt;&gt;&gt;&gt;

                                           and tried to reproduce the
            solution.

                                           Unfortunately I always get an
            error message.
                                           My DB is complaining about
            one of your
                     functions.

                                           I got my routing table from
            osm2po. The
                     table has
                              the following
                                           structure:

                                           1;”id”;”integer”
                                           2;”osm_id”;”bigint”
                                           3;”osm_name”;”character varying”
                                           4;”osm_meta”;”character varying”
                                           5;”osm_source_id”;”bigint”
                                           6;”osm_target_id”;”bigint”;
                                           7;”clazz”;”integer”
                                           8;”flags”;”integer”
                                           9;”source”;”integer”
                                           10;”target”;”integer”
                                           11;”length”;”double precision”
                                           12;”kmh”;”integer”
                                           13;”cost”;”double precision”
                                           14;”reverse_cost”;”double
            precision”
                                           15;”x1″;”double precision”
                                           16;”y1″;”double precision”
                                           17;”x2″;”double precision”
                                           18;”y2″;”double precision”

                       19;”geom_way”;”geometry(________LineString,4326)”

                                           - I installed the functions
            as mentioned
                     via SQL
                              window in
                                           pgAdmin3
                                           (copy&paste then excecute)
                                           - I create and populate the
            my_route table
                                           - When it comes to step 5 and
            I try

                                           select id,lon,lat from
                              pgr_tspDijkstraLen(’my_route’, 1260
                                           ) dj, my_route rt where
            dj.id2=rt.node;

                                           my DB warns

                                           ERROR: cannot concatenate
            incompatible arrays
                                           DETAIL: Arrays with differing
            element
                     dimensions
                              are not
                                           compatible for
                                           concatenation.
                                           CONTEXT: PL/pgSQL function
                     “pgr_makedijkstramatrix”
                              line 25 at
                                           assignment PL/pgSQL function
                     “pgr_tspdijkstra” line
                              8 at
                                           RETURN QUERY
                                           PL/pgSQL function
            “pgr_tspdijkstralen”
                     line 3 at
                              RETURN QUERY

                                           ********** Fehler **********

                                           ERROR: cannot concatenate
            incompatible
                     arrays SQL
                              Status:2202E
                                           Detail:Arrays with differing
            element
                     dimensions are not
                                           compatible for
                                           concatenation.
                                           Kontext:PL/pgSQL function
                     “pgr_makedijkstramatrix”
                              line 25
                                           at assignment
                                           PL/pgSQL function
            “pgr_tspdijkstra” line 8 at
                              RETURN QUERY
                                           PL/pgSQL function
            “pgr_tspdijkstralen”
                     line 3 at
                              RETURN QUERY

                                           Do you have any idea what
            went wrong? I really
                              really need your
                                           solutionget working. I would
            appreciate a lot.

                                           Thanks for your help.

                                           PS: this text is a copy of
            what I wrote on
                     on the
                              comment
                                           site of the
                                           blog where I found the solution.

                                           BR
                                           Carsten

            _______________________________________________________
                                           Pgrouting-users mailing list

            Pgrouting-users@lists.osgeo.________org
                                           <mailto:Pgrouting-users@lists
            <mailto:Pgrouting-users@lists>.
                     <mailto:Pgrouting-users@lists
            <mailto:Pgrouting-users@lists>.__>____osgeo.org
            <http://osgeo.org> <http://osgeo.org>
                              <mailto:Pgrouting-users@lists.
            <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                     <mailto:Pgrouting-users@lists.__osgeo.org
            <mailto:Pgrouting-users@lists.osgeo.org>>>>
            http://lists.osgeo.org/________mailman/listinfo/pgrouting-________users
            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;&gt;

            _______________________________________________________
                                       Pgrouting-users mailing list

            Pgrouting-users@lists.osgeo.________org
                                       <mailto:Pgrouting-users@lists
            <mailto:Pgrouting-users@lists>.
                     <mailto:Pgrouting-users@lists
            <mailto:Pgrouting-users@lists>.__>____osgeo.org
            <http://osgeo.org> <http://osgeo.org>
                              <mailto:Pgrouting-users@lists.
            <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                     <mailto:Pgrouting-users@lists.__osgeo.org
            <mailto:Pgrouting-users@lists.osgeo.org>>>>
            http://lists.osgeo.org/________mailman/listinfo/pgrouting-________users
            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;&gt;

            _______________________________________________________
                                   Pgrouting-users mailing list
                                   Pgrouting-users@lists.osgeo.________org
                                   <mailto:Pgrouting-users@lists
            <mailto:Pgrouting-users@lists>.
                     <mailto:Pgrouting-users@lists
            <mailto:Pgrouting-users@lists>.__>____osgeo.org
            <http://osgeo.org> <http://osgeo.org>
                              <mailto:Pgrouting-users@lists.
            <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                     <mailto:Pgrouting-users@lists.__osgeo.org
            <mailto:Pgrouting-users@lists.osgeo.org>>>>
            http://lists.osgeo.org/________mailman/listinfo/pgrouting-________users
            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;&gt;

            <http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;&gt;

              _____________________________________________________
                              Pgrouting-users mailing list
                              Pgrouting-users@lists.osgeo.______org
                              <mailto:Pgrouting-users@lists.
            <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                     <mailto:Pgrouting-users@lists.__osgeo.org
            <mailto:Pgrouting-users@lists.osgeo.org>>>
            http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;

              _____________________________________________________
                          Pgrouting-users mailing list
                          Pgrouting-users@lists.osgeo.______org
                          <mailto:Pgrouting-users@lists.
            <mailto:Pgrouting-users@lists.>____osgeo.org <http://osgeo.org>
                     <mailto:Pgrouting-users@lists.__osgeo.org
            <mailto:Pgrouting-users@lists.osgeo.org>>>
            http://lists.osgeo.org/______mailman/listinfo/pgrouting-______users
            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;&gt;

            <http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;&gt;

                     ___________________________________________________
                     Pgrouting-users mailing list
                     Pgrouting-users@lists.osgeo.____org
                     <mailto:Pgrouting-users@lists.__osgeo.org
            <mailto:Pgrouting-users@lists.osgeo.org>>
            http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

                 ___________________________________________________
                 Pgrouting-users mailing list
                 Pgrouting-users@lists.osgeo.____org
                 <mailto:Pgrouting-users@lists.__osgeo.org
            <mailto:Pgrouting-users@lists.osgeo.org>>
            http://lists.osgeo.org/____mailman/listinfo/pgrouting-____users
            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users&gt;

            <http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;&gt;

            _________________________________________________
            Pgrouting-users mailing list
            Pgrouting-users@lists.osgeo.__org
            <mailto:Pgrouting-users@lists.osgeo.org>
            http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
            <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

        _________________________________________________
        Pgrouting-users mailing list
        Pgrouting-users@lists.osgeo.__org
        <mailto:Pgrouting-users@lists.osgeo.org>
        http://lists.osgeo.org/__mailman/listinfo/pgrouting-__users
        <http://lists.osgeo.org/mailman/listinfo/pgrouting-users&gt;

_______________________________________________
Pgrouting-users mailing list
Pgrouting-users@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/pgrouting-users

Thanks Steve,

my version is
PostgreSQL 9.1.11 on i686-pc-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 32-bit

I’am running it on a OSGeoLive 7.0

I’ll wait till later or if someone else who wants to try to solve this one I’ll be happy.

Until later

···

2014-02-25 21:23 GMT+01:00 Stephen Woodbridge <woodbri@swoodbridge.com>:

I’m busy for the next few days so I will not have time to look at it until later this week.

What version of postgresql are you running?

select * from version();

I would google “postgresql array functions” and read up on these.There is a function that will tell you the dimensions of an array and maybe you need to print out some more notices to figure out what it is expecting.

Maybe someone else on the list wants to take a crack at this.

Thanks,
-Steve

On 2/25/2014 3:14 PM, Carsten Hogertz wrote:

Hi Steve,
have been busy the last days so I only check your Thursday’s solution
right now. Still not working.
My function looks like this:

create or replace function pgr_makeDijkstraMatrix(thetbl text, sqlP
text, OUT dmatrix double precision, OUT ids integer)
as
$body$
declare
sql text;
sql2 text;
r record;
r2 record;
i integer;
j integer;
matrixl double precision;
begin

ids := ‘{}’::integer;
sql:=‘select node, id-1 as id from ‘||thetbl;
for r in execute sql loop
sql2:=‘select id1, array_agg(cost) as arow from (
SELECT id1, id2, cost
FROM pgr_kdijkstraCost(’’’||sqlP||‘’‘, ‘||r.node||
‘, (select array_agg(node) from ‘||thetbl||’ where
id>’||r.id <http://r.id>||’), false, false)
) as foo group by id1 order by id1’;
for r2 in execute sql2 loop
matrixl := ‘{}’;
for i in 1…r.id <http://r.id> loop
matrixl := array_append(matrixl, dmatrix[i][r.id
<http://r.id>+1]);
end loop;
matrixl := array_cat(matrixl, r2.arow);
dmatrix := array_cat(dmatrix, array[matrixl]);
raise notice ‘r2: %’, r2;
raise notice ‘r2.id1: %’, r2.id1;
raise notice ‘ids: %’, ids;
–ids := ids || r2.id1;
ids := array_cat(ids, array[r2.id1]);
end loop;
end loop;
end;
$body$
language plpgsql stable cost 10;

create or replace function pgr_tspDijkstra(thetbl text, sql text,
start_id integer, end_id integer default (-1))
returns setof pgr_costResult as
$body$
declare
sid integer;
eid integer;

begin

return query with dm as (
select * from pgr_makeDijkstraMatrix( thetbl, sql )
),
ids as (
select (row_number() over (order by id asc))-1 as rnum, id
from (
select unnest(ids) as id
from dm
) foo
),
t as (
select a.seq, b.rnum, b.id <http://b.id>
from pgr_tsp(
(select dmatrix from dm),
(select rnum from ids where id=start_id limit
1)::integer,
(case when end_id = -1 then -1 else (select rnum
from ids where id=end_id limit 1) end)::integer
) a,
ids b
where a.id <http://a.id>=b.rnum
),
r as (
select array_agg(t.rnum) as rnum from t
)
select t.seq::integer,
t.rnum::integer as id1,
t.id::integer as id2,

dm.dmatrix[r.rnum[t.seq+1]+1][r.rnum[(t.seq+1)%array_length(r.rnum,
1)+1]+1]::float8 as cost
from t, dm, r;
end;
$body$
language plpgsql volatile cost 50 rows 50;

create or replace function pgr_tspDijkstraLen(thetbl text, start_id
integer, end_id integer default (-1))
returns setof pgr_costResult as
$body$
begin
return query SELECT * FROM pgr_tspDijkstra(thetbl,
‘SELECT id, source::integer, target::integer, length::double
precision AS cost FROM cgn_2po_4pgr’,
start_id, end_id);
end;
$body$
language plpgsql stable;

AND the error I am getting:
NOTICE: r2:
(34304,"{0,5.3602868897,4.6782573327,5.6026971537,5.2062747797,5.0497181017,5.3147719797,5.0700916462,4.3220066797,4.8593618137,4.0002255227,6.055760592,12.5155379824,9.3170226155,8.72783427270001,5.9460446587,3.0868131677,5.1839796057,5.2301666167,2.1211198847,5.7037465591,2.7282842677,8.4758437557,11.1027935904,7.9434273599,7.8361619299,7.7610621969,7.4929139614,5.8106133327,5.9579132527,5.9888473034,6.5618433959,4.5013708887,1.9218516244,5.7559805232,5.2267081177,5.0968196707,4.8949133597,5.9137964962,4.2936059427,4.6948533593,3.4377318427,3.7991617067,4.1242444467,3.8858731777,3.9596393887,4.9192685996,4.6734033563,4.7511846457,4.4544981945,4.2748693367,3.411559417,6.6851381985,6.6744741285,6.9296475385,7.0136847108,7.1371500908,7.2719520708,6.6787720528,7.3530295908,6.8599596928,7.2216891568,7.4951304208,7.4404728868,8.1332243958,6.2736028029,6.963685048,6.0483763169,5.8653351624,5.6164044005,6.54979166,5.8783224469,6.533468297,5.8553434082,5.7676662122,6.267915357,5.22607939

03,3.745459072,6.352470342,5.4392033722,5.5562602522,5.3996670482,6.171297855,5.648779598,5.5653279855,5.671668653,5.3243595462,5.879320328,5.859442385,6.080574272,5.3767159992,6.170852717,5.3001119472,5.687201287,5.3573110752,3.586385579,5.566591422,5.5104826925,5.916268775,5.4418422465,5.4037394705,5.640889612,5.1407657702,4.5523677017,5.3873769863,3.601570449,2.978252449,4.8725960282,4.9817842222,5.2355359365,5.1227105795,5.177856607,5.098596533,5.1891181988,4.9327118245,4.4632330777,7.4879538737,4.8591269625,3.1339054377,5.8472818275,4.6043306952,3.3542942377,4.7660145915,6.6679095357,5.51150886,2.7404344677,5.9332075344,6.2019594857,5.266709364,5.4924174224,5.180577724,3.0277711677,6.2913260157,4.2862670877,5.5461328154,5.5809644644,5.1132029296,5.1904326724,4.8352505633,4.9641930171,5.1366240426,7.0699378037,3.1274712477,5.1487646306,5.2717034197,5.0200090866,3.0911490977,5.8984613527,5.1973381747,4.2427530627,6.7293864957,4.7943011637,5.1130266607,5.3948779287,4.7124246547,5.2
186371577,2.9723417287,2.3171875277,2.8159853427,4.7913513947,4.7863347867,3.4531342837,3.8161332287,5.8431115757,4.4873126817,5.6577494097,5.5867970832,9.4583860946,2.7784615917,5.4279953797,1.9376872717,5.0813930177,5.8860618114,6.2411339874,6.4536904614,6.0972641874,5.7247963284,5.9823452114,5.8316140784,5.2398164977,6.2963392357,5.5864457124,6.1599995178,5.2609646384,6.1012355027,6.4129483756,6.0056487896,5.0106569884,5.4239402364,6.1148656496,2.673828844,4.3332873457,3.2943586634,4.5834393467,7.278601561,3.5870893269,3.3299191554,4.1049776549,5.9256568037,6.2719334873,6.2594329923,5.5752581689,5.6058592867,6.1311384893,6.4726413519,5.8973941434,6.2572672069,5.9667442136,5.3965422637,7.2837623985,6.9586195092,7.1137641952,6.3682104908,7.8495628418,7.2245886958,6.2983788278,7.3509762248,6.9925366658,6.5600944468,6.936328733,6.616665943,6.738732443}")

CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions are not compatible for
concatenation.
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 26 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: cannot concatenate incompatible arrays
SQL Status:2202E
Detail:Arrays with differing element dimensions are not compatible for
concatenation.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 26 at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

HOW comes? I really don’t know what to do.
May you be so kind and try to help again?
Thanks
Carsten

2014-02-21 9:36 GMT+01:00 Carsten Hogertz <carsten.hogertz@gmail.com
mailto:[carsten.hogertz@gmail.com](mailto:carsten.hogertz@gmail.com)>:

2014-02-20 23:25 GMT+01:00 Stephen Woodbridge
<woodbri@swoodbridge.com mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>:

On 2/20/2014 4:59 PM, Carsten Hogertz wrote:

2014-02-20 22:47 GMT+01:00 Stephen Woodbridge
<woodbri@swoodbridge.com mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)
<mailto:woodbri@swoodbridge.__com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>>:

On 2/20/2014 4:39 PM, Carsten Hogertz wrote:

2014-02-20 22:20 GMT+01:00 Stephen Woodbridge
<woodbri@swoodbridge.com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)
<mailto:woodbri@swoodbridge.__com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>
<mailto:woodbri@swoodbridge.
mailto:[woodbri@swoodbridge](mailto:woodbri@swoodbridge).____com
<mailto:woodbri@swoodbridge.__com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>>>:

On 2/20/2014 3:54 PM, Carsten Hogertz wrote:

Thanks Steve,

coming home and adding your lines it
returns with an error:

NOTICE: r2:
(34304,"{0,5.3602868897 tel:3602868897
<tel:3602868897 tel:3602868897>
<tel:3602868897 tel:3602868897 <tel:3602868897
tel:3602868897>>,4.6782573327 tel:6782573327
<tel:6782573327 tel:6782573327>
<tel:6782573327 tel:6782573327
<tel:6782573327 tel:6782573327>>,5.6026971537 tel:6026971537
<tel:6026971537 tel:6026971537> <tel:6026971537
tel:6026971537 <tel:6026971537
tel:6026971537>>,5.2062747797 tel:2062747797
<tel:2062747797 tel:2062747797>
<tel:2062747797 tel:2062747797

<tel:2062747797
tel:2062747797>>,5.__0497181017,5.3147719797
tel:3147719797 <tel:3147719797 tel:3147719797>
<tel:3147719797 tel:3147719797
<tel:3147719797
tel:3147719797>>,5.__0700916462,4.____3220066797,4.__8593618137
tel:8593618137
<tel:8593618137 tel:8593618137>
<tel:8593618137 tel:8593618137
<tel:8593618137
tel:8593618137>>,4.0002255227,6.______055760592,12.5155379824
tel:5155379824
<tel:5155379824 tel:5155379824>
<tel:5155379824 tel:5155379824
<tel:5155379824
tel:5155379824>>,9.__3170226155,8.____72783427270001,5.__9460446587,____3.0868131677,5.__1839796057,__5.__2301666167,2.__1211198847,__5.__7037465591
tel:7037465591
<tel:7037465591 tel:7037465591>
<tel:7037465591 tel:7037465591

<tel:7037465591
tel:7037465591>>,2.__7282842677,8.4758437557
tel:4758437557 <tel:4758437557 tel:4758437557>
<tel:4758437557 tel:4758437557
<tel:4758437557
tel:4758437557>>,11.__1027935904,7.____9434273599,7.__8361619299,7.____7610621969,7.__4929139614,5.____8106133327
tel:8106133327
<tel:8106133327 tel:8106133327>
<tel:8106133327 tel:8106133327
<tel:8106133327
tel:8106133327>>,5.__9579132527,5.____9888473034,6.__5618433959
tel:5618433959
<tel:5618433959 tel:5618433959>
<tel:5618433959 tel:5618433959
<tel:5618433959 tel:5618433959>>,4.5013708887 tel:5013708887
<tel:5013708887 tel:5013708887>
<tel:5013708887 tel:5013708887
<tel:5013708887
tel:5013708887>>,1.__9218516244,5.____7559805232,5.__2267081177
tel:2267081177
<tel:2267081177 tel:2267081177>
<tel:2267081177 tel:2267081177
<tel:2267081177
tel:2267081177>>,5.0968196707,4.______8949133597,5.9137964962
tel:9137964962
<tel:9137964962 tel:9137964962>
<tel:9137964962 tel:9137964962
<tel:9137964962
tel:9137964962>>,4.__2936059427,4.____6948533593,3.__4377318427
tel:4377318427
<tel:4377318427 tel:4377318427>
<tel:4377318427 tel:4377318427
<tel:4377318427
tel:4377318427>>,3.7991617067,4.______1242444467,3.8858731777,3.______9596393887,4.9192685996
tel:9192685996
<tel:9192685996 tel:9192685996>
<tel:9192685996 tel:9192685996
<tel:9192685996
tel:9192685996>>,4.__6734033563,4.____7511846457,4.__4544981945,4.____2748693367,3.__411559417,6.____6851381985,6.__6744741285,6.____9296475385
tel:9296475385
<tel:9296475385
tel:9296475385>,7.__0136847108,7.____1371500908,7.__2719520708,6.__6787720528
tel:6787720528
<tel:6787720528
tel:6787720528>,7.__3530295908,6.__8599596928 tel:8599596928
<tel:8599596928
tel:8599596928>,7.__2216891568,7.____4951304208,7.__4404728868
tel:4404728868
<tel:4404728868
tel:4404728868>,8.__1332243958,6.____2736028029,6.__963685048,6.____0483763169,5.__8653351624
tel:8653351624
<tel:8653351624 tel:8653351624>,5.__6164044005
tel:6164044005
<tel:6164044005
tel:6164044005>,6.__54979166,5.__8783224469 tel:8783224469
<tel:8783224469
tel:8783224469>,6.__533468297,5.__8553434082 tel:8553434082
<tel:8553434082
tel:8553434082>,5.__7676662122,6.____267915357,5.__22607939

03,3.745459072,6.352470342,5.______4392033722,5.5562602522,5.______3996670482,6.171297855,5.______648779598,5.5653279855,5.______671668653,5.3243595462,5.______879320328,5.859442385
tel:5.859442385
<tel:5.859442385
tel:5.859442385>,6.____080574272,5.__3767159992,6.____170852717,5.__3001119472,5.____687201287,5.__3573110752,3.____586385579,5.__566591422,5.____5104826925
tel:5104826925,5.__916268775,5.____4418422465,5.__4037394705
tel:4037394705,5.____640889612,5.__1407657702,4.____5523677017,5.__3873769863,3.____601570449,2.__978252449,4.____8725960282
tel:8725960282,4.__9817842222,5.____2355359365,5.__1227105795,5.____177856607,5.__098596533,5.____1891181988,4.__9327118245,4.____4632330777,7.__4879538737,4.____8591269625,3.__1339054377,5.____8472818275
tel:8472818275,4.__6043306952
tel:6043306952,3.____3542942377,4.__7660145915,6.____6679095357
tel:6679095357,5.__51150886,2.____7404344677
tel:7404344677,5.__9332075344,6.____2019594857
tel:2019594857,5.__266709364,5.____4924174224,5.__180577724,3.____0277711677,6.__2913260157,4.____2862670877,5.__5461328154,5.____5809644644
tel:5809644644,5.__1132029296,5.____1904326724,4.__8352505633
tel:8352505633,4.____9641930171,5.__1366240426,7.____0699378037,3.__1274712477,5.____1487646306,5.__2717034197,5.____0200090866,3.__0911490977,5.____8984613527,5.1973381747,4.

2427530627,6.7293864957,4.______7943011637,5.1130266607,5.______3948779287,4.7124246547
tel:7124246547,5.2

186371577,2.9723417287 tel:9723417287
<tel:9723417287 tel:9723417287> <tel:9723417287
tel:9723417287

<tel:9723417287
tel:9723417287>>,2.3171875277,2.8159853427
tel:8159853427 <tel:8159853427 tel:8159853427>
<tel:8159853427 tel:8159853427

<tel:8159853427
tel:8159853427>>,__4.7913513947,4.7863347867
tel:7863347867 <tel:7863347867 tel:7863347867>
<tel:7863347867 tel:7863347867
<tel:7863347867
tel:7863347867>>,3.4531342837,__3.____8161332287,5.8431115757,4.______4873126817,5.6577494097
tel:6577494097,5.______5867970832
tel:5867970832,9.4583860946
tel:4583860946,2.______7784615917
tel:7784615917,5.4279953797,1.______9376872717
tel:9376872717,5.0813930177,5.______8860618114,6.2411339874,6.______4536904614,6.0972641874,5.______7247963284
tel:7247963284,5.9823452114,5.______8316140784
tel:8316140784,5.2398164977
tel:2398164977,6.______2963392357,5.5864457124,6.______1599995178,5.2609646384,6.______1012355027,6.4129483756,6.______0056487896,5.0106569884,5.______4239402364,6.1148656496,2.______673828844,4.3332873457,3.______2943586634,4.5834393467,7.______278601561,3.5870893269,3.______3299191554,4.1049776549,5.______9256568037,6.2719334873,6.______2594329923,5.5752581689,5.______6058592867,6.1311384893,6.______4726413519,5.8973941434,6.______2572672069,5.9667442136,5.______3965422637,7.2837623985,6.______9586195092,7.1137641952,6.______3682104908,7.8495628418,7.______2245886958,6.2983788278,7.______3509762248,6.9925366658,6.______5600944468,6.936328733,6.______616665943,6.738732443}")

CONTEXT: PL/pgSQL function
“pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen”
line 3 at RETURN
QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function
“pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen”
line 3 at RETURN
QUERY
NOTICE: ids:
CONTEXT: PL/pgSQL function
“pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen”
line 3 at RETURN
QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element
dimensions are not
compatible for
concatenation.
CONTEXT: PL/pgSQL function
“pgr_makedijkstramatrix”
line 25 at
assignment
PL/pgSQL function “pgr_tspdijkstra” line 8
at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen”
line 3 at RETURN
QUERY

I tried to write to Dose but he didn’t
reply yet.
Does anyone have a clue?

Try adding the follow line after the “begin” line:

ids := ‘{}’::integer;

This should make sure the ids is initialized
as an empty
array of
integers.

-Steve

Again:
NOTICE: r2:
(34304,"{0,5.3602868897 tel:3602868897
<tel:3602868897 tel:3602868897>,4.6782573327 tel:6782573327
<tel:6782573327 tel:6782573327>,5.6026971537
tel:6026971537 <tel:6026971537
tel:6026971537>,5.2062747797 tel:2062747797
<tel:2062747797
tel:2062747797>,5.__0497181017,5.3147719797
tel:3147719797,5.____0700916462,4.3220066797,4.__8593618137 tel:8593618137,__4.0002255227,6.__055760592,12.__5155379824,9.__3170226155,8.__72783427270001,5.__9460446587,__3.0868131677,5.__1839796057,5.__2301666167,2.__1211198847,5.__7037465591,2.__7282842677,8.__4758437557,11.__1027935904,7.__9434273599,7.__8361619299,7.__7610621969,7.__4929139614,5.__8106133327,5.__9579132527,5.__9888473034,6.__5618433959,4.__5013708887,1.__9218516244,5.__7559805232,5.__2267081177,5.__0968196707,4.__8949133597,5.__9137964962,4.__2936059427,4.__6948533593,3.__4377318427,3.__7991617067,4.__1242444467,3.__8858731777,3.__9596393887,4.__9192685996,4.__6734033563,4.__7511846457,4.__4544981945,4.__2748693367,3.__411559417,6.__6851381985,6.__6744741285,6.__9296475385,7.__0136847108,7.__1371500908,7.__2719520708,6.__6787720528,7.__3530295908,6.__8599596928,7.__2216891568,7.__4951304208,7.__4404728868,8.__1332243958,6.__2736028029,6.__963685048,6.__0483763169,5.__8653351624,5.__6164044005,6

.__54979166,5.__8783224469,6.__533468297,5.__8553434082,5.7

676662122,6.__267915357,5.__22607939

03,3.745459072,6.352470342,5.____4392033722,5.5562602522,5.____3996670482,6.171297855,5.____648779598,5.5653279855,5.____671668653,5.3243595462,5.____879320328,5.859442385,6.____080574272,5.3767159992,6.____170852717,5.3001119472,5.____687201287,5.3573110752,3.____586385579,5.566591422,5.____5104826925,5.916268775,5.____4418422465,5.4037394705,5.____640889612,5.1407657702,4.____5523677017,5.3873769863,3.____601570449,2.978252449,4.____8725960282,4.9817842222,5.____2355359365,5.1227105795,5.____177856607,5.098596533,5.____1891181988,4.9327118245,4.____4632330777,7.4879538737,4.____8591269625,3.1339054377,5.____8472818275,4.6043306952,3.____3542942377,4.7660145915,6.____6679095357,5.51150886,2.____7404344677,5.9332075344,6.____2019594857,5.266709364,5.____4924174224,5.180577724,3.____0277711677,6.2913260157,4.____2862670877,5.5461328154,5.____5809644644,5.1132029296,5.____1904326724,4.8352505633,4.____9641930171,5.1366240426,7.____0699378037,3.1274712477,5.____1487646306

,5.2717034197,5.____0200090866,3.0911490977,5.__8984613527,5.1973381747,4.

2427530627,6.7293864957,4.____7943011637,5.1130266607,5.____3948779287,4.7124246547,5.2

186371577,2.9723417287 tel:9723417287 <tel:9723417287
tel:9723417287>,2.3171875277,2.8159853427 tel:8159853427
<tel:8159853427
tel:8159853427>,__4.7913513947,4.7863347867 tel:7863347867
<tel:7863347867
tel:7863347867>,3.4531342837,__3.__8161332287,5.8431115757,4.____4873126817,5.6577494097,5.____5867970832,9.4583860946,2.____7784615917,5.4279953797,1.____9376872717,5.0813930177,5.____8860618114,6.2411339874,6.____4536904614,6.0972641874,5.____7247963284,5.9823452114,5.____8316140784,5.2398164977,6.____2963392357,5.5864457124,6.____1599995178,5.2609646384,6.____1012355027,6.4129483756,6.____0056487896,5.0106569884,5.____4239402364,6.1148656496,2.____673828844,4.3332873457,3.____2943586634,4.5834393467,7.____278601561,3.5870893269,3.____3299191554,4.1049776549,5.____9256568037,6.2719334873,6.____2594329923,5.5752581689,5.____6058592867,6.1311384893,6.____4726413519,5.8973941434,6.____2572672069,5.9667442136,5.____3965422637,7.2837623985,6.____9586195092,7.1137641952,6.____3682104908,7.8495628418,7.____2245886958,6.2983788278,7.____3509762248,6.9925366658,6.____5600944468,6.936328733,6.____616665943,6.738732443}")

CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line
8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at
RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line
8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at
RETURN QUERY
NOTICE: ids: {}

CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line
8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at
RETURN QUERY
ERROR: cannot concatenate incompatible arrays
DETAIL: Arrays with differing element dimensions
are not
compatible for
concatenation.
CONTEXT: PL/pgSQL function
“pgr_makedijkstramatrix” line 26 at
assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at
RETURN QUERY

Thanks for your help. Maybe you need some other
facts about my
table?
The whole script I am excecuting is the following.
I changed some
things, like adding your code and changing the
table name ‘ways’ to
‘cgn_2po_4pgr’:

create or replace function
pgr_makeDijkstraMatrix(thetbl text, sqlP
text, OUT dmatrix double precision, OUT ids
integer)
as
$body$
declare
sql text;
sql2 text;
r record;
r2 record;
i integer;
j integer;
matrixl double precision;
begin

ids := ‘{}’::integer;
sql:=‘select node, id-1 as id from ‘||thetbl;
for r in execute sql loop
sql2:=‘select id1, array_agg(cost) as
arow from (
SELECT id1, id2, cost
FROM
pgr_kdijkstraCost(’’’||sqlP||‘____’', '||r.node||

‘, (select array_agg(node) from
‘||thetbl||’ where
id>’||r.id <http://r.id> <http://r.id>
<http://r.id>||'), false, false)

) as foo group by id1 order by id1’;
for r2 in execute sql2 loop
matrixl := ‘{}’;
for i in 1…r.id <http://r.id>
<http://r.id> <http://r.id> loop

matrixl := array_append(matrixl,
dmatrix[i][r.id <http://r.id> <http://r.id>
<http://r.id>+1]);

end loop;
matrixl := array_cat(matrixl,
r2.arow);
dmatrix := array_cat(dmatrix,
array[matrixl]);
raise notice ‘r2: %’, r2;
raise notice ‘r2.id1: %’, r2.id1;
raise notice ‘ids: %’, ids;

Sorry, I don’t have a running version of this so this
is somewhat
guess work.

– ids := ids || r2.id1;
ids := array_cat(ids, r2.id1);

try changing the line above to:

ids := array_cat(ids, array[r2.id1]);

Hi Steve, thank you. Back in office now but I’ll try that later at home.
I’ll let you know and hopefully I get a good result :slight_smile:
Thanks so much.
Carsten

So comment out the old like and rewrite like this.

-Steve

Thanks for all your help Steve,
hope, we’re getting closer! Look, not it returns this:
NOTICE: r2:
(34304,"{0,5.3602868897 tel:3602868897,4.6782573327
tel:6782573327,5.6026971537 tel:6026971537,5.2062747797
tel:2062747797,5.__0497181017,5.3147719797,5.__0700916462,4.3220066797,4.__8593618137,4.0002255227,6.__055760592,12.5155379824,9.__3170226155,8.72783427270001,5.__9460446587,3.0868131677,5.__1839796057,5.2301666167,2.__1211198847,5.7037465591,2.__7282842677,8.4758437557,11.__1027935904,7.9434273599,7.__8361619299,7.7610621969,7.__4929139614,5.8106133327,5.__9579132527,5.9888473034,6.__5618433959,4.5013708887,1.__9218516244,5.7559805232,5.__2267081177,5.0968196707,4.__8949133597,5.9137964962,4.__2936059427,4.6948533593,3.__4377318427,3.7991617067,4.__1242444467,3.8858731777,3.__9596393887,4.9192685996,4.__6734033563,4.7511846457,4.__4544981945,4.2748693367,3.__411559417,6.6851381985,6.__6744741285,6.9296475385,7.__0136847108,7.1371500908,7.__2719520708,6.6787720528,7.__3530295908,6.8599596928,7.__2216891568,7.4951304208,7.__4404728868,8.1332243958,6.__2736028029,6.963685048,6.__0483763169,5.8653351624,5.__6164044005,6.54979166,5.__8783224469,6.533468297,5.__8553434082

,5.7676662122,6.__267915357,5.22607939

03,3.745459072,6.352470342,5.__4392033722,5.5562602522,5.__3996670482,6.171297855,5.__648779598,5.5653279855,5.__671668653,5.3243595462,5.__879320328,5.859442385,6.__080574272,5.3767159992,6.__170852717,5.3001119472,5.__687201287,5.3573110752,3.__586385579,5.566591422,5.__5104826925,5.916268775,5.__4418422465,5.4037394705,5.__640889612,5.1407657702,4.__5523677017,5.3873769863,3.__601570449,2.978252449,4.__8725960282,4.9817842222,5.__2355359365,5.1227105795,5.__177856607,5.098596533,5.__1891181988,4.9327118245,4.__4632330777,7.4879538737,4.__8591269625,3.1339054377,5.__8472818275,4.6043306952,3.__3542942377,4.7660145915,6.__6679095357,5.51150886,2.__7404344677,5.9332075344,6.__2019594857,5.266709364,5.__4924174224,5.180577724,3.__0277711677,6.2913260157,4.__2862670877,5.5461328154,5.__5809644644,5.1132029296,5.__1904326724,4.8352505633,4.__9641930171,5.1366240426,7.__0699378037,3.1274712477,5.__1487646306,5.2717034197,5.__0200090866,3.0911490977,5.__8984613527,5.1973381747,

4.__2427530627,6.7293864957,4.__7943011637,5.1130266607,5.__3948779287,4.7124246547,5.2

186371577,2.9723417287
tel:9723417287,2.3171875277,2.8159853427
tel:8159853427,__4.7913513947,4.7863347867
tel:7863347867,3.4531342837,__3.8161332287,5.8431115757,4.__4873126817,5.6577494097,5.__5867970832,9.4583860946,2.__7784615917,5.4279953797,1.__9376872717,5.0813930177,5.__8860618114,6.2411339874,6.__4536904614,6.0972641874,5.__7247963284,5.9823452114,5.__8316140784,5.2398164977,6.__2963392357,5.5864457124,6.__1599995178,5.2609646384,6.__1012355027,6.4129483756,6.__0056487896,5.0106569884,5.__4239402364,6.1148656496,2.__673828844,4.3332873457,3.__2943586634,4.5834393467,7.__278601561,3.5870893269,3.__3299191554,4.1049776549,5.__9256568037,6.2719334873,6.__2594329923,5.5752581689,5.__6058592867,6.1311384893,6.__4726413519,5.8973941434,6.__2572672069,5.9667442136,5.__3965422637,7.2837623985,6.__9586195092,7.1137641952,6.__3682104908,7.8495628418,7.__2245886958,6.2983788278,7.__3509762248,6.9925366658,6.__5600944468,6.936328733,6.__616665943,6.738732443}")

CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: r2.id1: 34304
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY
NOTICE: ids: {}
CONTEXT: PL/pgSQL function “pgr_tspdijkstra” line 8 at
RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

ERROR: function array_cat(integer, integer) does not exist

LINE 1: SELECT array_cat(ids, r2.id1)
^
HINT: No function matches the given name and argument
types. You might
need to add explicit type casts.
QUERY: SELECT array_cat(ids, r2.id1)
CONTEXT: PL/pgSQL function “pgr_makedijkstramatrix” line 31
at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

********** Fehler **********

ERROR: function array_cat(integer, integer) does not exist
SQL Status:42883
Hinweis:No function matches the given name and argument
types. You might
need to add explicit type casts.
Kontext:PL/pgSQL function “pgr_makedijkstramatrix” line 31
at assignment
PL/pgSQL function “pgr_tspdijkstra” line 8 at RETURN QUERY
PL/pgSQL function “pgr_tspdijkstralen” line 3 at RETURN QUERY

Function does not exist? Still have an idea?
Thanks
Carsten

end loop;
end loop;
end;
$body$
language plpgsql stable cost 10;

create or replace function pgr_tspDijkstra(thetbl
text, sql text,
start_id integer, end_id integer default (-1))
returns setof pgr_costResult as
$body$
declare
sid integer;
eid integer;

begin

return query with dm as (
select * from pgr_makeDijkstraMatrix(
thetbl, sql )
),
ids as (
select (row_number() over (order by id
asc))-1 as rnum, id
from (
select unnest(ids) as id
from dm
) foo
),
t as (
select a.seq, b.rnum, b.id <http://b.id>
<http://b.id> <http://b.id>

from pgr_tsp(
(select dmatrix from dm),
(select rnum from ids where
id=start_id limit
1)::integer,
(case when end_id = -1 then -1
else (select
rnum
from ids where id=end_id limit 1) end)::integer
) a,
ids b
where a.id <http://a.id> <http://a.id>
<http://a.id>=b.rnum

),
r as (
select array_agg(t.rnum) as rnum from t
)
select t.seq::integer,
t.rnum::integer as id1,
t.id::integer as id2,

dm.dmatrix[r.rnum[t.seq+1]+1][____r.rnum[(t.seq+1)%array___length(__r.rnum,

1)+1]+1]::float8 as cost
from t, dm, r;
end;
$body$
language plpgsql volatile cost 50 rows 50;

create or replace function
pgr_tspDijkstraLen(thetbl text, start_id
integer, end_id integer default (-1))
returns setof pgr_costResult as
$body$
begin
return query SELECT * FROM
pgr_tspDijkstra(thetbl,
‘SELECT id, source::integer,
target::integer,
length::double
precision AS cost FROM cgn_2po_4pgr’,
start_id, end_id);
end;
$body$
language plpgsql stable;

Maybe you’ve got another idea?
Thank you
Carsten

Thanks for you help
Carsten

2014-02-20 16:24 GMT+01:00 Stephen Woodbridge
<woodbri@swoodbridge.com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)
<mailto:woodbri@swoodbridge.__com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>
<mailto:woodbri@swoodbridge.
mailto:[woodbri@swoodbridge](mailto:woodbri@swoodbridge).____com
<mailto:woodbri@swoodbridge.__com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>>
<mailto:woodbri@swoodbridge
mailto:[woodbri@swoodbridge](mailto:woodbri@swoodbridge).
<mailto:woodbri@swoodbridge
mailto:[woodbri@swoodbridge](mailto:woodbri@swoodbridge).>______com

<mailto:woodbri@swoodbridge.
mailto:[woodbri@swoodbridge](mailto:woodbri@swoodbridge).____com
<mailto:woodbri@swoodbridge.__com
mailto:[woodbri@swoodbridge.com](mailto:woodbri@swoodbridge.com)>>>>:

On 2/20/2014 9:41 AM, Stephen
Woodbridge wrote:

Hi Carsten,

The functions at
http://dose.0wnz.at/scripts/________sql/pgroute_tspDijkstra.__sql
<http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql>

<http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql>__>

<http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql>

<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql>>>

<http://dose.0wnz.at/scripts/______sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql>

<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql>>

<http://dose.0wnz.at/scripts/____sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql>

<http://dose.0wnz.at/scripts/__sql/pgroute_tspDijkstra.sql
<http://dose.0wnz.at/scripts/sql/pgroute_tspDijkstra.sql>>>>
are not part of pgRouting.

You need to ask this question to
Ivan the
author of the
original
article.

Sorry, Dose was the original author.

You probably need to add some
debug statements
to get a
better
understanding of what the code is
doing. For
example in
pgr_makeDijkstraMatrix before the
statement:

ids := ids || array[r2.id1];

You could try changing this line to:

ids := ids || r2.id1;

and see if that fixes the problem.

-Steve

Add:

raise notice ‘r2: %’, r2;
raise notice ‘r2.id1: %’, r2.id1;
raise notice ‘ids: %’, ids;

This should show you the
progression of how
the array
ids is getting
built as it appears to be
compaining about
that in the
error
message.

Hope this helps,
-Steve

On 2/20/2014 9:21 AM, Carsten
Hogertz wrote:

Hi everybody, I am new to
this list and new to
pgrouting.

I found the following TSP example
http://hardwarefetish.com/513-________pgrouting-dijksta-______travelling-__salesman-problem-______tsp-with-__openstreetmap
<http://hardwarefetish.com/513-______pgrouting-dijksta-____travelling-__salesman-problem-____tsp-with-__openstreetmap>

<http://hardwarefetish.com/__513-____pgrouting-dijksta-____travelling-__salesman-problem-____tsp-with-__openstreetmap
<http://hardwarefetish.com/513-____pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap>>

<http://hardwarefetish.com/____513-__pgrouting-dijksta-____travelling-__salesman-problem-____tsp-with-__openstreetmap
<http://hardwarefetish.com/__513-__pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap>

<http://hardwarefetish.com/__513-__pgrouting-dijksta-__travelling-__salesman-problem-__tsp-with-__openstreetmap
<http://hardwarefetish.com/513-__pgrouting-dijksta-travelling-__salesman-problem-tsp-with-__openstreetmap>>>

<http://hardwarefetish.com/______513-pgrouting-dijksta-______travelling-salesman-problem-______tsp-with-openstreetmap
<http://hardwarefetish.com/____513-pgrouting-dijksta-____travelling-salesman-problem-____tsp-with-openstreetmap>

<http://hardwarefetish.com/____513-pgrouting-dijksta-____travelling-salesman-problem-____tsp-with-openstreetmap
<http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap>>

<http://hardwarefetish.com/____513-pgrouting-dijksta-____travelling-salesman-problem-____tsp-with-openstreetmap
<http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap>

<http://hardwarefetish.com/__513-pgrouting-dijksta-__travelling-salesman-problem-__tsp-with-openstreetmap
<http://hardwarefetish.com/513-pgrouting-dijksta-travelling-salesman-problem-tsp-with-openstreetmap>>>>

and tried to reproduce the
solution.

Unfortunately I always get an
error message.
My DB is complaining about
one of your
functions.

I got my routing table from
osm2po. The
table has
the following
structure:

1;”id”;”integer”
2;”osm_id”;”bigint”
3;”osm_name”;”character varying”