pgRouting

Forum #15 - Topic #166 - Message List

Routing inside building

Hello,

I am a new user to pgRouting, i need to use it to find the shortest path between two rooms in different buildings. the lines which represent the network are not in the same level(they have different Z values) the first room for example in the first floor and the another is in the fifth floor, So the line are connected but have different levels ... Is it possible to use pgRouting for such purpose

Thanks Ihab

  • Message #570

    Hi Ihab,

    I see no problem here. We use only 2D, so pgRouting can route through you graph if edges are connected.

    • Message #571

      Thanks,

      If the lines are overlaps but not connected is this will be ok for example a corridor in different floors?

      is there a way to make points in the networks are closed and not accessible for example doors?

      Thanks

      • Message #573

        The essential thing to use pgRouting is that you have a correct network consisting of links (edges) with start and end vertex. pgRouting itself doesn't care if this is 3D or 2D.

        You might need to change your network to provide connecting links between the layers (floors). They can overlap as long as they are not linked together.

        • Message #574

          Thanks,

          I have created a network which has Z value as shape file. i entered this data to the postgres database ... i have created x1,x2,y1,y2, and added the values to it. after that i add the source_id, target_id and length fields.

          When i try to run the following sql statements

          SELECT assign_vertex_id('ihab1', 0.001, 'the_geom', 'gid'); UPDATE ihab1 SET length = length(the_geom);

          i received the following errors

          FEHLER: neue Zeile für Relation »vertices_tmp« verletzt Check-Constraint »enforce_dims_the_geom« KONTEXT: SQL-Anweisung »INSERT INTO vertices_tmp (the_geom) VALUES ( $1 )« PL/pgSQL function "point_to_id" line 13 at SQL statement PL/pgSQL function "assign_vertex_id" line 38 at assignment

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

          FEHLER: neue Zeile für Relation »vertices_tmp« verletzt Check-Constraint »enforce_dims_the_geom« SQL Status:23514 Kontext:SQL-Anweisung »INSERT INTO vertices_tmp (the_geom) VALUES ( $1 )« PL/pgSQL function "point_to_id" line 13 at SQL statement PL/pgSQL function "assign_vertex_id" line 38 at assignment

          i try the data to be in 2d then the sql works fine... there is a constrains in the table as follow

          enforce_dims_the_geom CHECK (ndims(the_geom) = 4);

          Is there any way to solve the problem and keep my data has Z value

          Thanks ihab

          • Message #577

            Hi,

            It would be nice if you post the error message in English. Or else I have to wait for my German colleague to come.

            • Message #581

              Below is the message translation to english

              ERROR: new row for relation "vertices_tmp" violated check constraint "enforce_dims_the_geom" CONTEXT: SQL "INSERT INTO vertices_tmp (the_geom) VALUES ($ 1)" PL / pgSQL function "point_to_id" line 13 at SQL statement PL / pgSQL function " assign_vertex_id "assignment at line 38

              ********** ********** Error

              ERROR: new row for relation "vertices_tmp" violated check constraint "enforce_dims_the_geom" SQL status: 23514 context: SQL "INSERT INTO vertices_tmp (the_geom) VALUES ($ 1)" PL / pgSQL function "point_to_id" line 13 at SQL statement PL / pgSQL function "assign_vertex_id" assignment at line 38

          • Message #575

            i need the z value to be with the lines vertex. because i need to visualize the result in 3d viewer.... Hopefully there will be a soluation ...

            thanks

            ihab