[pgrouting-dev] Support for Time Constraints

Jay Mahadeokar jai.mahadeokar at gmail.com
Fri Jun 17 00:42:25 EDT 2011


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>wrote:

>
>
> On Sun, Jun 12, 2011 at 8:00 PM, Stephen Woodbridge <
> 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>>
>>>
>>> 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>> 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>
>>>
>>>    Web: http://georepublic.de
>>>
>>>    Tel: +49 (089) 420 959 519
>>>    Sip: 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>
>>>
>>>    http://lists.osgeo.org/mailman/listinfo/pgrouting-dev
>>>
>>>
>>>
>>>
>>> --
>>> Regards,
>>> -Jay Mahadeokar
>>>
>>>
>>>
>>> _______________________________________________
>>> pgrouting-dev mailing list
>>> pgrouting-dev at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/pgrouting-dev
>>>
>>
>> _______________________________________________
>> pgrouting-dev mailing list
>> pgrouting-dev at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/pgrouting-dev
>>
>
>
>
> --
> Regards,
> -Jay Mahadeokar
>
>


-- 
Regards,
-Jay Mahadeokar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/pgrouting-dev/attachments/20110617/6c9309f6/attachment-0001.html


More information about the pgrouting-dev mailing list