<div dir="ltr">Hi Peter,<div><br></div><div>That sounds reasonable. But I am still confused.</div><div>I think the logic is under the below logic. </div><div>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".</div><div>
<p class=""> <span class="">void</span> prepareHighwayNode( <span class="">long</span> <span class="">osmId</span> )</p>
<p class=""> {</p>
<p class=""> <span class="">int</span> <span class="">tmpIndex</span> = getNodeMap().get(<span class="">osmId</span>);</p>
<p class=""> <span class="">if</span> (<span class="">tmpIndex</span> == <span class="">EMPTY</span>)</p>
<p class=""> {</p>
<p class=""><span class=""> </span>// osmId is used exactly once</p>
<p class=""> getNodeMap().put(<span class="">osmId</span>, <span class="">PILLAR_NODE</span>);</p>
<p class=""> } <span class="">else</span> <span class="">if</span> (<span class="">tmpIndex</span> > <span class="">EMPTY</span>)</p>
<p class=""> {</p>
<p class=""><span class=""> </span>// mark node as tower node as it occured at least twice times</p>
<p class=""> getNodeMap().put(<span class="">osmId</span>, <span class="">TOWER_NODE</span>);</p>
<p class=""> } <span class="">else</span></p>
<p class=""> {</p>
<p class=""><span class=""> </span>// tmpIndex is already negative (already tower node)</p>
<p class=""> }</p>
<p class=""> }</p></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature"><b>Best Regards,</b><div><b>ZhiQiang ZHAO</b></div></div></div>
<br><div class="gmail_quote">On Wed, Jun 3, 2015 at 12:15 PM, Peter <span dir="ltr"><<a href="mailto:graphhopper@gmx.de" target="_blank">graphhopper@gmx.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hi,<br>
<br>
the details are a bit trickier as we do everything very memory
efficient.<br>
<br>
And if a osm node occurs twice it is a pillar node, otherwise it
is a tower node.<br>
<br>
Kind Regards,<br>
Peter<div><div class="h5"><br>
<br>
On 03.06.2015 21:05, John Zhao wrote:<br>
</div></div></div><div><div class="h5">
<blockquote type="cite">
<div dir="ltr">I go through the logic:
<div>It go through all osmways, and count the occurrence of
nodeID.</div>
<div>if nodeID appear only once, it's a pillar node.</div>
<div>otherwise, it's a tower node.</div>
<div><br>
</div>
<div>That's it. Do I miss something?</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br clear="all">
<div>
<div><b>Best Regards,</b>
<div><b>ZhiQiang ZHAO</b></div>
</div>
</div>
<br>
<div class="gmail_quote">On Wed, Jun 3, 2015 at 11:55 AM, Peter
<span dir="ltr"><<a href="mailto:graphhopper@gmx.de" target="_blank">graphhopper@gmx.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hi,<br>
<br>
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<br>
<br>
Regards,<br>
Peter
<div>
<div><br>
<br>
On 03.06.2015 20:35, John Zhao wrote:<br>
</div>
</div>
</div>
<div>
<div>
<blockquote type="cite">
<div dir="ltr">Hi Peter,
<div><br>
</div>
<div>Could you tell me where is the merging logic?</div>
<div>That's interesting.</div>
</div>
<div class="gmail_extra"><br clear="all">
<div>
<div><b>Best Regards,</b>
<div><b>ZhiQiang ZHAO</b></div>
</div>
</div>
<br>
<div class="gmail_quote">On Wed, Jun 3, 2015 at
12:09 AM, Peter <span dir="ltr"><<a href="mailto:graphhopper@gmx.de" target="_blank">graphhopper@gmx.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>Hi Jan,<br>
<br>
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.<span><br>
<br>
<div><br>
</div>
<div>> Have you made a experiment to
count the number of 2 degree nodes
with the equal flags and name in OSM?</div>
</span>
<div><span>> And then we can know how
many edges we can save.<br>
<br>
</span> Yes, this should be done before
implementing it :)<br>
<br>
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.<br>
<br>
Issues like #234 or #111 will probably
make more difference.<br>
</div>
<br>
Kind Regards,<br>
Peter
<div>
<div><br>
<br>
On 02.06.2015 22:35, John Zhao wrote:<br>
</div>
</div>
</div>
<div>
<div>
<blockquote type="cite">
<div dir="ltr">Hi,
<div><br>
</div>
<div>AFAIK, there is no this kind of
merging logic here.</div>
<div>Wait the answer from Peter.</div>
<div>Probably you need to implement
it by your own.</div>
<div>And it's not easy. </div>
<div>Maybe can be done before
import?</div>
<div>What you want, is actually
convert a tower node to a pillar
node.</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br clear="all">
<div>
<div><b>Best Regards,</b>
<div><b>ZhiQiang ZHAO</b></div>
</div>
</div>
<br>
<div class="gmail_quote">On Tue, Jun
2, 2015 at 1:27 PM, Jan Torben
Heuer <span dir="ltr"><<a href="mailto:jan@komoot.de" target="_blank">jan@komoot.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">Hi ZhiQiang
ZHAO,
<div><br>
</div>
<div>Thanks for your quick
answer.</div>
<div>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.</div>
<span><font color="#888888">
<div><br>
</div>
<div>Jan</div>
</font></span>
<div>
<div>
<div><br>
<div>
<div>Am 02.06.2015 um
21:53 schrieb John
Zhao <<a href="mailto:johnthu@gmail.com" target="_blank">johnthu@gmail.com</a>>:</div>
<br>
<blockquote type="cite">
<div dir="ltr">Hi,
<div><br>
</div>
<div>Have you made
a experiment to
count the number
of 2 degree
nodes with the
equal flags and
name in OSM?</div>
<div>And then we
can know how
many edges we
can save.</div>
<div><br>
</div>
<div>I doubt this
should be not
too much for
OSM.</div>
</div>
<div class="gmail_extra"><br clear="all">
<div>
<div><b>Best
Regards,</b>
<div><b>ZhiQiang
ZHAO</b></div>
</div>
</div>
<br>
<div class="gmail_quote">On
Tue, Jun 2, 2015
at 11:59 AM, Jan
Torben Heuer <span dir="ltr"><<a href="mailto:jan@komoot.de" target="_blank">jan@komoot.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Can
Graphhopper
merge two ways
with equal
flags and name
if there is no
intersection
between them
(no third way
connected)?<br>
<br>
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.<br>
<br>
Thanks,<br>
<br>
Jan<br>
<br>
</blockquote>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
<br>
</div></div></div>
<br>_______________________________________________<br>
GraphHopper mailing list<br>
<a href="mailto:GraphHopper@openstreetmap.org">GraphHopper@openstreetmap.org</a><br>
<a href="https://lists.openstreetmap.org/listinfo/graphhopper" target="_blank">https://lists.openstreetmap.org/listinfo/graphhopper</a><br>
<br></blockquote></div><br></div>