<br><br><div class="gmail_quote">On Wed, Jun 22, 2011 at 7:57 PM, Stephen Woodbridge <span dir="ltr">&lt;<a href="mailto:woodbri@swoodbridge.com">woodbri@swoodbridge.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Jay,<br>
<br>
I am back from my trip and wading through emails.<br>
<br>
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.<br>

<br>
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.<br>
</blockquote><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
Maybe I am missing the point, anyway just trying to understand and not suggesting that you change anything at this point.<br></blockquote><div><br>Hi Steve,<br><br>Well I was very confused regarding the classification too since I have zero experience with real world data, and so I just choose length as criteria. This data is just for test purpose. We can modify the model and criteria any time, since writing the plsql procedure to generate such does not take too much effort. Also, the data does not affect the internal working of the algorithm, so I think for now, I can work with the currently generated test data. <br>
<br>Any other ideas/ criteria for classification are welcome, and I would write the scripts to generate corresponding data.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

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

        <a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-dev" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/pgrouting-dev</a><br>
<br>
<br>
<br>
<br>
    --<br>
    Regards,<br>
    -Jay Mahadeokar<br>
<br>
<br>
<br>
<br>
--<br>
Regards,<br>
-Jay Mahadeokar<br>
<br>
<br>
<br>
______________________________<u></u>_________________<br>
pgrouting-dev mailing list<br>
<a href="mailto:pgrouting-dev@lists.osgeo.org" target="_blank">pgrouting-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-dev" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/pgrouting-dev</a><br>
</div></div></blockquote><div><div></div><div class="h5">
<br>
______________________________<u></u>_________________<br>
pgrouting-dev mailing list<br>
<a href="mailto:pgrouting-dev@lists.osgeo.org" target="_blank">pgrouting-dev@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/pgrouting-dev" target="_blank">http://lists.osgeo.org/<u></u>mailman/listinfo/pgrouting-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Regards,<br>-Jay Mahadeokar<br><br>