[GraphHopper] There must be bug on the subnetwork removal

Peter graphhopper at gmx.de
Wed Jul 29 08:04:37 UTC 2015


Hi ZhiQiang,

you mean the oneway procedure (step 3) removes nodes+edges leading to
further normal subnetwork removal in step 4? This should not happen. The
subnetwork should be removed already in step 3.

> On step 2, although there is a
gate http://www.openstreetmap.org/node/703042503
> on http://www.openstreetmap.org/way/6374339
> And gate block that edge.

Because of this gate the island is a oneway subnetwork (!) and should
get entirely removed in step 2 IMO.

> On step 3, a very important point are removed due to oneway

If just one edge/node is removed there is something wrong. The whole
island should be removed.

Kind Regards,
Peter

On 29.07.2015 09:50, John Zhao wrote:
> Hi Peter,
>
> I know the difference between subnetworks and oneway-subnetworks.
> I am talking about the step 2 and step 4, not step 3.
>
> step 2 and step 4 are both findSubnetwork() with the same parameter.
>  minOnewayNetworkSize = 20, minNetworkSize = 200
>
> I think I figure out why this discrepancy occurs.
> One case is a island in SF bay area. The island has 2 oneway roads
> connected to the main network. 
> http://www.openstreetmap.org/way/53726398
> http://www.openstreetmap.org/way/6374339
>
> On step 2, although there is a
> gate http://www.openstreetmap.org/node/703042503
> on http://www.openstreetmap.org/way/6374339
> And gate block that edge.
> The other oneway is connected http://www.openstreetmap.org/way/53726398.
> So, this island is connected to the whole network.
>
> On step 3, a very important point are removed due to
> oneway: http://www.openstreetmap.org/node/678314919
>
> Then on step 4, the island are not connected to the main network.
>
> *Best Regards,*
> *ZhiQiang ZHAO*
>
> On Tue, Jul 28, 2015 at 11:12 PM, Peter <graphhopper at gmx.de
> <mailto:graphhopper at gmx.de>> wrote:
>
>     Hi ZhiQiang,
>
>     hmmh, not sure if I understand what is unknown at your side.
>
>     Subnetworks are different things than oneway-subnetworks. For
>     example 4-5 is a oneway subnetwork if connect with a oneway to the
>     main graph only:
>     mainGraph->4-5
>
>     And this cannot be detected in step 2.
>
>     Please have a look at the unit tests to see more examples for the
>     different scenes
>
>     Regards,
>     Peter
>
>
>     On 28.07.2015 20:05, John Zhao wrote:
>>     Hi Peter,
>>
>>     the result I posted is not the result of oneway-subnetwork procedure.
>>
>>     The total procedures include:
>>     1. remove zero-degree node
>>     2. findSubnetwork
>>     3. oneway-subnetwork procedure
>>     4. findSubnetwork again on graphhopper.cleanup()
>>
>>     My question is, why those islands are recognized on step 4, but
>>     not on step 2?
>>
>>
>>
>>     *Best Regards,*
>>     *ZhiQiang ZHAO*
>>
>>     On Tue, Jul 28, 2015 at 12:02 AM, Peter <graphhopper at gmx.de
>>     <mailto:graphhopper at gmx.de>> wrote:
>>
>>         Hi ZhiQiang,
>>
>>         I think it is because both networks are oneway subnetworks
>>         not found by the normal subnetwork procedure (but by the
>>         oneway-subnetwork procedure) and you defined the oneway
>>         minimum size to 20
>>
>>         Regards,
>>         Peter
>>
>>
>>         On 28.07.2015 03:13, John Zhao wrote:
>>>         Hi Peter,
>>>
>>>         What I do is:
>>>         1. minOnewayNetworkSize = 20, minNetworkSize = 200
>>>         2. build san francisco bay area osm data
>>>         3. I print out the subnetworks result of the second call.
>>>         int remainingSubnetworks = preparation.findSubnetworks().size();
>>>         4. I found the subnetwork has some smaller than 200, like:
>>>         subnetwork start from: 37.32611992939085,-121.9961998312816 size: 24
>>>         subnetwork start from: 37.78373608999855,-122.25065187925067 size: 34
>>>
>>>         5. I can't understand why the subnetworks with 24 nodes and 34 nodes are not removed by preparation.doWork();
>>>         It call the same method:
>>>         Map map = this.findSubnetworks();
>>>
>>>
>>>         *Best Regards,*
>>>         *ZhiQiang ZHAO*
>>>
>>>         On Mon, Jul 27, 2015 at 12:54 PM, Peter <graphhopper at gmx.de
>>>         <mailto:graphhopper at gmx.de>> wrote:
>>>
>>>             Hi John,
>>>
>>>             sorry, I do not understand your problem or question
>>>             here. Would you describe it again step by step for me :) ?
>>>
>>>             Kind Regards,
>>>             Peter
>>>
>>>
>>>             On 27.07.2015 21:45, John Zhao wrote:
>>>>             Hi Peter,
>>>>
>>>>             Thanks.
>>>>             Actually I only have 1 flagEncoder in the EncodingManager.
>>>>             The call is exact same, preparation.findSubnetworks()
>>>>             preparation.findSubnetworks() using edgeFilter which is also from singleEncoder.
>>>>
>>>>             *Best Regards,*
>>>>             *ZhiQiang ZHAO*
>>>>
>>>>             On Sun, Jul 26, 2015 at 7:56 AM, Peter
>>>>             <graphhopper at gmx.de <mailto:graphhopper at gmx.de>> wrote:
>>>>
>>>>                 Hi John,
>>>>
>>>>                 it should not be related to calling these method
>>>>                 twice. It is just one time where you calculate the
>>>>                 subnetworks independent of any FlagEncoder or
>>>>                 direction via findSubnetworks and the second pass
>>>>                 is FlagEncoder- and access-dependent via
>>>>                 removeDeadEndUnvisitedNetworks.
>>>>
>>>>                 Regards,
>>>>                 Peter
>>>>
>>>>
>>>>                 On 24.07.2015 21:16, John Zhao wrote:
>>>>>                 Hi Peter,
>>>>>
>>>>>                 I am still confused.
>>>>>                 at first we call 
>>>>>                 map = findSubnetworks();
>>>>>
>>>>>                 after the cleanup, we call the same method in
>>>>>                 Graphhopper.
>>>>>                 int remainingSubnetworks = preparation.findSubnetworks().size();
>>>>>                 Why the subnetwork was recognized the latter time, but not the first time?
>>>>>                 we remove some edges make it not connected?
>>>>>
>>>>>                 *Best Regards,*
>>>>>                 *ZhiQiang ZHAO*
>>>>>
>>>>>                 On Thu, Jul 23, 2015 at 2:22 PM, Peter
>>>>>                 <graphhopper at gmx.de <mailto:graphhopper at gmx.de>>
>>>>>                 wrote:
>>>>>
>>>>>
>>>>>                     Hi ZhiQiang,
>>>>>
>>>>>                     yes, according to the wiki this is wrongly mapped:
>>>>>                     /Avoid tagging highway intersections as that
>>>>>                     does not make clear which way has the
>>>>>                     impediment. /
>>>>>
>>>>>                     http://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate
>>>>>
>>>>>                     Peter
>>>>>
>>>>>
>>>>>                     On 23.07.2015 23:16, John Zhao wrote:
>>>>>>                     Hi Peter,
>>>>>>
>>>>>>                     Maybe the following one related
>>>>>>                     with https://github.com/graphhopper/graphhopper/issues/388#issuecomment-88066385 
>>>>>>
>>>>>>                     I have a look
>>>>>>                     at 37.32611992939085,-121.9961998312816.
>>>>>>                     It seesm related with barrier=gate at
>>>>>>                     intersection.
>>>>>>                     http://www.openstreetmap.org/node/1126492194
>>>>>>
>>>>>>                     *Best Regards,*
>>>>>>                     *ZhiQiang ZHAO*
>>>>>>
>>>>>>                     On Thu, Jul 23, 2015 at 2:11 PM, Peter
>>>>>>                     <graphhopper at gmx.de
>>>>>>                     <mailto:graphhopper at gmx.de>> wrote:
>>>>>>
>>>>>>
>>>>>>                         There are two types of subnetworks and
>>>>>>                         the smaller ones seems to be 'one-way
>>>>>>                         subnetworks' which means they are eg.
>>>>>>                         only reachable as destination or start.
>>>>>>                         But if you would start from a
>>>>>>                         destination-only subnetwork you'll get
>>>>>>                         'not found' for all points outside of
>>>>>>                         this network.
>>>>>>
>>>>>>                         Regards,
>>>>>>                         Peter
>>>>>>
>>>>>>
>>>>>>                         On 23.07.2015 23:03, John Zhao wrote:
>>>>>>>                         Interesting, 
>>>>>>>                         when I increase minOnewayNetworkSize
>>>>>>>                         from 20 to 50, the following two
>>>>>>>                         disappeared.
>>>>>>>                         subnetwork start from:
>>>>>>>                         37.32611992939085,-121.9961998312816
>>>>>>>                         size: 24
>>>>>>>                         subnetwork start from:
>>>>>>>                         37.78373608999855,-122.25065187925067
>>>>>>>                         size: 34
>>>>>>>
>>>>>>>                         *Best Regards,*
>>>>>>>                         *ZhiQiang ZHAO*
>>>>>>>
>>>>>>>                         On Thu, Jul 23, 2015 at 1:55 PM, John
>>>>>>>                         Zhao <johnthu at gmail.com
>>>>>>>                         <mailto:johnthu at gmail.com>> wrote:
>>>>>>>
>>>>>>>                             Hi,
>>>>>>>
>>>>>>>                             I tried car flag encoder with
>>>>>>>                             following parameter on San Francisco
>>>>>>>                             bay area data from mapzen.
>>>>>>>                             https://s3.amazonaws.com/metro-extracts.mapzen.com/san-francisco-bay_california.osm.pbf
>>>>>>>
>>>>>>>                             minNetworkSize=200
>>>>>>>                             minOnewayNetworkSize=20
>>>>>>>
>>>>>>>                             I printed all the remaining subnetworks.
>>>>>>>                             edges: 591932, nodes 437420, there
>>>>>>>                             were 3496 subnetworks. removed them
>>>>>>>                             => 13121 less nodes. Remaining
>>>>>>>                             subnetworks:5
>>>>>>>                             The remaining subnetworks are:
>>>>>>>                             subnetwork start from:
>>>>>>>                             37.32611992939085,-121.9961998312816
>>>>>>>                             size: 24
>>>>>>>                             subnetwork start from:
>>>>>>>                             37.56018439442332,-122.30257814308803 size:
>>>>>>>                             436637
>>>>>>>                             subnetwork start from:
>>>>>>>                             37.78373608999855,-122.25065187925067 size:
>>>>>>>                             34
>>>>>>>                             subnetwork start from:
>>>>>>>                             38.180185962770565,-121.70631393878864
>>>>>>>                             size: 301
>>>>>>>                             subnetwork start from:
>>>>>>>                             37.85717050411933,-122.07633641532816 size:
>>>>>>>                             424
>>>>>>>
>>>>>>>                             I don't understand why there is
>>>>>>>                             still subnetwork less than 200 nodes.
>>>>>>>
>>>>>>>                             I have a look
>>>>>>>                             at 37.32611992939085,-121.9961998312816.
>>>>>>>                             It seesm related with barrier=gate
>>>>>>>                             at intersection.
>>>>>>>                             http://www.openstreetmap.org/node/1126492194
>>>>>>>
>>>>>>>                             *Best Regards,*
>>>>>>>                             *ZhiQiang ZHAO*
>>>>>>>
>>>>>>>
>>>>
>>>>
>>
>>
>>         _______________________________________________
>>         GraphHopper mailing list
>>         GraphHopper at openstreetmap.org
>>         <mailto:GraphHopper at openstreetmap.org>
>>         https://lists.openstreetmap.org/listinfo/graphhopper
>>
>>
>>
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/graphhopper/attachments/20150729/473919e3/attachment.html>


More information about the GraphHopper mailing list