[GraphHopper] Does Graphhopper merge ways with equal flags and name?

Peter graphhopper at gmx.de
Wed Jun 3 21:07:56 UTC 2015


Hi John,

good question :)

Maybe that is the reason that in rare cases pillar nodes are incorrectly
determined as tower nodes. One could introduce a new PILLAR_NODE2=0
variable and try if everything is still working. But before I would pick
a big area and count the percentage of those incorrectly determined
tower nodes if this is valuable at all.

Regards,
Peter


On 03.06.2015 22:16, John Zhao wrote:
> Hi Peter,
>
> That sounds reasonable. But I am still confused.
> I think the logic is under the below logic. 
> Based on the logic and commets, a node is "mark node as tower node as
> it occured at least twice times", not "at least 3 times".
>
>     void prepareHighwayNode( long osmId )
>
>     {
>
>         int tmpIndex = getNodeMap().get(osmId);
>
>         if (tmpIndex == EMPTY)
>
>         {
>
>             // osmId is used exactly once
>
>             getNodeMap().put(osmId, PILLAR_NODE);
>
>         } else if (tmpIndex > EMPTY)
>
>         {
>
>             // mark node as tower node as it occured at least twice times
>
>             getNodeMap().put(osmId, TOWER_NODE);
>
>         } else
>
>         {
>
>             // tmpIndex is already negative (already tower node)
>
>         }
>
>     }
>
>
> *Best Regards,*
> *ZhiQiang ZHAO*
>
> On Wed, Jun 3, 2015 at 12:15 PM, Peter <graphhopper at gmx.de
> <mailto:graphhopper at gmx.de>> wrote:
>
>     Hi,
>
>     the details are a bit trickier as we do everything very memory
>     efficient.
>
>     And if a osm node occurs twice it is a pillar node, otherwise it
>     is a tower node.
>
>     Kind Regards,
>     Peter
>
>
>     On 03.06.2015 21:05, John Zhao wrote:
>>     I go through the logic:
>>     It go through all osmways, and count the occurrence of nodeID.
>>     if nodeID appear only once, it's a pillar node.
>>     otherwise, it's a tower node.
>>
>>     That's it. Do I miss something?
>>
>>
>>     *Best Regards,*
>>     *ZhiQiang ZHAO*
>>
>>     On Wed, Jun 3, 2015 at 11:55 AM, Peter <graphhopper at gmx.de
>>     <mailto:graphhopper at gmx.de>> wrote:
>>
>>         Hi,
>>
>>         there is no separate merging logic (although there was in 0.1
>>         or something). In OSMReader it is decided when an edge is
>>         created and e.g. OSM ways are splitted if there are barriers
>>         or junctions on the way. So it decides whether an osm nodes
>>         will be a tower node or just a pillar node
>>
>>         Regards,
>>         Peter
>>
>>
>>         On 03.06.2015 20:35, John Zhao wrote:
>>>         Hi Peter,
>>>
>>>         Could you tell me where is the merging logic?
>>>         That's interesting.
>>>
>>>         *Best Regards,*
>>>         *ZhiQiang ZHAO*
>>>
>>>         On Wed, Jun 3, 2015 at 12:09 AM, Peter <graphhopper at gmx.de
>>>         <mailto:graphhopper at gmx.de>> wrote:
>>>
>>>             Hi Jan,
>>>
>>>             we do this kind of 'merging' logic already in the import
>>>             step when deciding what should be handled as tower node
>>>             and what is a pillar node. Otherwise you'll need as
>>>             twice as many RAM when copying from one graph to the other.
>>>
>>>
>>>             > Have you made a experiment to count the number of 2 degree nodes with
>>>             the equal flags and name in OSM?
>>>             > And then we can know how many edges we can save.
>>>
>>>             Yes, this should be done before implementing it :)
>>>
>>>             And as the merging logic is currently not 100% optimal,
>>>             there could be some minor savings even when recognizing
>>>             the different street names, but I'm unsure if it is
>>>             worth the effort.
>>>
>>>             Issues like #234 or #111 will probably make more difference.
>>>
>>>             Kind Regards,
>>>             Peter
>>>
>>>
>>>             On 02.06.2015 22:35, John Zhao wrote:
>>>>             Hi,
>>>>
>>>>             AFAIK, there is no this kind of merging logic here.
>>>>             Wait the answer from Peter.
>>>>             Probably you need to implement it by your own.
>>>>             And it's not easy. 
>>>>             Maybe can be done before import?
>>>>             What you want, is actually convert a tower node to a
>>>>             pillar node.
>>>>
>>>>
>>>>             *Best Regards,*
>>>>             *ZhiQiang ZHAO*
>>>>
>>>>             On Tue, Jun 2, 2015 at 1:27 PM, Jan Torben Heuer
>>>>             <jan at komoot.de <mailto:jan at komoot.de>> wrote:
>>>>
>>>>                 Hi ZhiQiang ZHAO,
>>>>
>>>>                 Thanks for your quick answer.
>>>>                 I have a custom FlagEncoder that imports only very
>>>>                 few ways and I don’t need the names. I guess, I
>>>>                 have mostly nodes with a degree of two.
>>>>
>>>>                 Jan
>>>>
>>>>                 Am 02.06.2015 um 21:53 schrieb John Zhao
>>>>                 <johnthu at gmail.com <mailto:johnthu at gmail.com>>:
>>>>
>>>>>                 Hi,
>>>>>
>>>>>                 Have you made a experiment to count the number of
>>>>>                 2 degree nodes with the equal flags and name in OSM?
>>>>>                 And then we can know how many edges we can save.
>>>>>
>>>>>                 I doubt this should be not too much for OSM.
>>>>>
>>>>>                 *Best Regards,*
>>>>>                 *ZhiQiang ZHAO*
>>>>>
>>>>>                 On Tue, Jun 2, 2015 at 11:59 AM, Jan Torben Heuer
>>>>>                 <jan at komoot.de <mailto:jan at komoot.de>> wrote:
>>>>>
>>>>>                     Hi,
>>>>>
>>>>>                     Can Graphhopper merge two ways with equal
>>>>>                     flags and name if there is no intersection
>>>>>                     between them (no third way connected)?
>>>>>
>>>>>                     I would like to create a very reduces graph
>>>>>                     with only few edges. What would be the easiest
>>>>>                     way to achieve it? I think I would have to
>>>>>                     disable the nameIndex for instance.
>>>>>
>>>>>                     Thanks,
>>>>>
>>>>>                     Jan
>>>>>
>>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/graphhopper/attachments/20150603/7c67a0fd/attachment.html>


More information about the GraphHopper mailing list