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

Stephen Woodbridge woodbri at swoodbridge.com
Thu Feb 20 07:24:15 PST 2014


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 at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/pgrouting-users
>>
>
> _______________________________________________
> Pgrouting-users mailing list
> Pgrouting-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/pgrouting-users



More information about the Pgrouting-users mailing list