[pgrouting-dev] Support for Time Constraints

Stephen Woodbridge woodbri at swoodbridge.com
Wed Jun 22 10:27:17 EDT 2011


Hi Jay,

I am back from my trip and wading through emails.

I am interested in what your rationale for looking a length as a 
classifier is. It would seem to me the length of a given segment has 
nothing to do with classifying a segment with respect to speed or road 
class. The length of a segment is typically a function of how often that 
route is intersected by other features. For example and a path through a 
city will have more intersections than a path through a rural country 
side. A mountain pass could be a very long segment but might be a very 
slow path because it is twisty and has a lot of elevation changes. A 
major road through a city might have intersections at every block hence 
have short segments but could still move a lot of traffic from one side 
of the city to another.

For testing purposes, any random classification is fine, but I like to 
pick classifications the reasonably model real life so when I see the 
results they reflect some general cognitive expectations and I can 
understand then or detect anomalies which might indicat a bug in the 
algorithm.

Maybe I am missing the point, anyway just trying to understand and not 
suggesting that you change anything at this point.

-Steve

On 6/17/2011 12:42 AM, Jay Mahadeokar wrote:
> Hi,
>
> Here is an interesting look into the data in ways table:
>
> pgrouting-workshop=# select round(avg(length)*10000) as avg,
> round(min(length)*10000) as min, round(max(length)*10000) as
> max,count(*) as count, class_id from ways group by class_id order by avg
> desc;
>
>   avg  | min  |  max  | count | class_id
> ------+------+-------+-------+----------
>   5320 |  250 | 12163 |    21 |      101
>   2135 | 1885 |  2385 |     2 |      111
>   1970 |  396 |  5168 |    17 |      102
>   1343 |   10 | 27485 |   234 |      106
>   1115 |   33 |  7964 |   221 |      108
>   1037 |   14 | 20020 |   248 |      109
>    938 |    9 | 23142 |  2761 |      110
>    837 |   21 |  2212 |    43 |      100
>    626 |    8 |  3327 |    90 |      112
>    619 |   26 |  9089 |   252 |      119
>    486 |  123 |  1618 |    11 |      117
>    473 |    7 | 16582 |  1259 |      114
>    364 |   97 |  1578 |    45 |      122
>    260 |    4 |   718 |   109 |      401
> (14 rows)
>
> So, I am going by the average length figure and considering class_id =
> (1001,111,102) as Type I (major_highways), which will be affected most
> by the traffic.
>
> class_id = (106,108,109,110,100) as Type II (minor_highways) which be
> comparatively less populated.
>
> class_id = (112,119,117,114,122,401) as Type III (streets) which will
> have least traffic.
>
> We want to have model such that during traffic hours the shortest path
> should go through streets.
>
> So, I am dividing day into following intervals, hope it sounds
> reasonable. I will write the corresponding plsql function that will
> generate the data accordingly. Note that the speed is in percentage of
> average speed. Since, we want to deal with time, we can effectively
> increase the lengths of the edges by same factor and assume speed as
> constant.
>
>
> Time Interval 	Speed for Type I 	Speed for Type II 	Speed for Type III
>
> 	
> 	
> 	
> 10 PM – 6 AM 	100 	100 	100
> 6 AM – 7 AM 	95 	90 	100
> 7 AM – 8 AM 	80 	75 	90
> 8 AM – 9 AM 	50 	45 	85
> 9 AM – 10 AM 	60 	55 	85
> 10 AM – 11 AM 	90 	85 	95
> 11 AM – 5 PM 	100 	100 	100
> 5 PM – 6 PM 	90 	85 	95
> 6 PM – 7 PM 	75 	70 	90
> 7 PM – 8 PM 	50 	45 	85
> 8 PM – 9 PM 	60 	55 	85
> 9 PM – 10 PM
> 	95 	90 	95
>
>
>
> Any feedback is welcome.
>
> I am currently stuck with a bug in the core time-dependent function,
> there seems to be a problem with non-integer data. Will try and fix that
> soon.
>
>
> On Wed, Jun 15, 2011 at 7:26 AM, Jay Mahadeokar
> <jai.mahadeokar at gmail.com <mailto:jai.mahadeokar at gmail.com>> wrote:
>
>
>
>     On Sun, Jun 12, 2011 at 8:00 PM, Stephen Woodbridge
>     <woodbri at swoodbridge.com <mailto:woodbri at swoodbridge.com>> wrote:
>
>         Jay,
>
>         Try:
>
>         select class_id, count(*) as cnt from ways group by class_id
>         oder by classid;
>
>         Typically you should a a distribution in real world data
>         something like:
>
>         5% limited access major highways
>         15% major roads
>         75% minor roads
>         5% trails, pedestrian ways, etc
>
>
>     Hi,
>
>     We have got following data in the pgrouting-workshop ways table.
>
>     pgrouting-workshop=# select distinct(count(class_id)) as
>     no_of_entries,class_id from ways group by class_id order by
>     no_of_entries;
>       no_of_entries | class_id
>     ---------------+----------
>                   2 |      111
>                  11 |      117
>                  17 |      102
>                  21 |      101
>                  43 |      100
>                  45 |      122
>                  90 |      112
>                 109 |      401
>                 221 |      108
>                 234 |      106
>                 248 |      109
>                 252 |      119
>                1259 |      114
>                2761 |      110
>     (14 rows)
>
>
>     The classes table in routing database gives more information on the
>     class_id field.  Also available here:
>     http://workshop.pgrouting.org/chapters/advanced.html
>
>     So, we have:
>
>     class_id    name                no_of_entries
>
>     110           track               2761
>     114           path                1259
>     119           steps               252
>     109           service            248
>     106           primary            234
>     108           living_street     221
>     401           roundabout      109
>
>     These are the major class_types with more than 100 entries in ways
>     table.
>
>     Steve had earlier suggested following idea for time dependent data
>     generation:
>
>
>     "If we think about "rush hour" around a major city, the highways
>     (based on road class) flowing into the city in the morning would get
>     reduced average speeds you could apply curve like average
>     speed*percent based on 6am (90%), 7am(75%), 8am(45%), 9am(50%),
>     10am(85%) and do something similar in the evening rush. It might be
>     too hard to figure on direction of flow in/out bound so apply the
>     curve to all traffic. The assumption is that the highways are
>     congested which will force traffic onto side streets. You might want
>     to also reduce the lower class speeds by say a constant 80% during
>     rush hour."
>
>     So, what classes should I consider as highways, what classes as
>     streets and so on? Or What should be the pattern of speed changes in
>     various classes?
>
>     The main focus would be, we should be routed through less congested
>     areas during rush hours right?
>
>     Once we finalise this model, I can write the plsql function to
>     generate the corresponding data.
>
>
>
>         Well in the US anyway. Also if this is OSM data then you might
>         get a better clue on classes by looking to that .... OH!, look
>         what I found in google :)
>
>         http://workshop.pgrouting.org/chapters/advanced.html
>
>         Looks like first digit is type and the three digits are from the
>         classes table.
>
>         -Steve
>
>
>         On 6/12/2011 4:33 AM, Jay Mahadeokar wrote:
>
>
>
>             On Sun, Jun 12, 2011 at 1:32 PM, Anton Patrushev
>             <anton.patrushev at georepublic.de
>             <mailto:anton.patrushev at georepublic.de>
>             <mailto:anton.patrushev at georepublic.de
>             <mailto:anton.patrushev at georepublic.de>>>
>
>             wrote:
>
>                 Hi Jay,
>
>                 No, there was no specific meaning, just king of
>             cyphering - first
>                 digit for road class and then two last digits for road type.
>
>
>             Hi Anton,
>
>             So, as you said last 2 digits are for road type. I can see
>             they are
>             mainly 00, 01, 02, 06, 08, 09, 10, 11, 12 ,14, 17.
>
>             Road class is just 1 or 4.
>
>             Can I differentiate major highways, minor highways, streets
>             etc using
>             this info?
>
>                 Anton.
>
>                 On 6/12/11, Jay Mahadeokar <jai.mahadeokar at gmail.com
>             <mailto:jai.mahadeokar at gmail.com>
>             <mailto:jai.mahadeokar at gmail.com
>             <mailto:jai.mahadeokar at gmail.com>>> wrote:
>              >> Hi Jay,
>              >>
>              >> I think that instead of just random times, I would take
>             a different
>              >> approach to generate this data. If we think about "rush
>             hour"
>                 around a
>              >> major
>              >> city, the highways (based on road class) flowing into
>             the city
>                 in the
>              >> morning would get reduced average speeds you could apply
>             curve like
>              >> average
>              >> speed*percent based on 6am (90%), 7am(75%), 8am(45%),
>             9am(50%),
>                 10am(85%)
>              >> and do something similar in the evening rush. It might
>             be too
>                 hard to
>              >> figure
>              >> on direction of flow in/out bound so apply the curve to all
>                 traffic. The
>              >> assumption is that the highways are congested which will
>             force
>                 traffic
>              >> onto
>              >> side streets. You might want to also reduce the lower class
>                 speeds by say
>              >> a
>              >> constant 80% during rush hour.
>              >>
>              >> If we can get OSM data then it should be easy to
>             populate the
>                 table with
>              >> that data.
>              >>
>              >> -Steve
>              >>
>              >
>              > I am trying to write plpgsql query to generate
>             time-dependent data
>              > corresponding to the ways table in pgrouting workshop. As
>                 suggested by Steve
>              > above, instead of generating random data, I will follow
>             patterns
>                 (see above
>              > message) so that the data is nearer to the real worlds
>             scenario.
>              >
>              > So, now I need to make distinction between highways,
>             streets etc.
>                 I saw the
>              > attribute class_id in ways table. It has 14 distinct values:
>              >  class_id
>              >
>              > ----------
>              >
>              >
>              > 102
>              >
>              >
>              > 122
>              >
>              >
>              > 106
>              >
>              >
>              > 111
>              >
>              >
>              > 108
>              >
>              >
>              > 100
>              >
>              >
>              > 109
>              >
>              >
>              > 112
>              >
>              >
>              > 101
>              >
>              >
>              > 110
>              >
>              >
>              > 401
>              >
>              >
>              > 119
>              >
>              >
>              > 117
>              >
>              >       114
>              >
>              > Any specific meaning attached to these values? I did not
>             find any
>              > information on the pgRouting-workshop website [1].
>              >
>              >
>              > Thanks in advance.
>              >
>              > [1] http://workshop.pgrouting.org/chapters/topology.html
>              >
>              > --
>              > Regards,
>              > -Jay Mahadeokar
>              >
>
>
>                 --
>                 Georepublic UG (haftungsbeschränkt)
>                 Salzmannstraße 44,
>                 81739 München, Germany
>
>                 Anton Patrushev
>                 CTO
>
>                 eMail: anton.patrushev at georepublic.de
>             <mailto:anton.patrushev at georepublic.de>
>             <mailto:anton.patrushev at georepublic.de
>             <mailto:anton.patrushev at georepublic.de>>
>
>                 Web: http://georepublic.de
>
>                 Tel: +49 (089) 420 959 519
>                 Sip: 1959519 at sipgate.de <mailto:1959519 at sipgate.de>
>             <mailto:1959519 at sipgate.de <mailto:1959519 at sipgate.de>>
>
>
>                 Commercial register: Amtsgericht München, HRB 181428
>                 CEO: Daniel Kastl
>                 _______________________________________________
>                 pgrouting-dev mailing list
>             pgrouting-dev at lists.osgeo.org
>             <mailto:pgrouting-dev at lists.osgeo.org>
>             <mailto:pgrouting-dev at lists.osgeo.org
>             <mailto:pgrouting-dev at lists.osgeo.org>>
>
>             http://lists.osgeo.org/mailman/listinfo/pgrouting-dev
>
>
>
>
>             --
>             Regards,
>             -Jay Mahadeokar
>
>
>
>             _______________________________________________
>             pgrouting-dev mailing list
>             pgrouting-dev at lists.osgeo.org
>             <mailto:pgrouting-dev at lists.osgeo.org>
>             http://lists.osgeo.org/mailman/listinfo/pgrouting-dev
>
>
>         _______________________________________________
>         pgrouting-dev mailing list
>         pgrouting-dev at lists.osgeo.org <mailto:pgrouting-dev at lists.osgeo.org>
>         http://lists.osgeo.org/mailman/listinfo/pgrouting-dev
>
>
>
>
>     --
>     Regards,
>     -Jay Mahadeokar
>
>
>
>
> --
> Regards,
> -Jay Mahadeokar
>
>
>
> _______________________________________________
> pgrouting-dev mailing list
> pgrouting-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/pgrouting-dev



More information about the pgrouting-dev mailing list