<div dir="ltr">Hi Peter,<div><br></div><div>I am more confused.</div><div>I think the original question is:</div><div>If there are 2 different OSMways in original OSM data, they and only they are connected.</div><div>And all the other tags are the same.</div><div>Does Graphhopper will merge them into a single edge in GH?</div><div>Then the graph is a little bit simplified.</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 2:07 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 John,<br>
<br>
good question :)<br>
<br>
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.<br>
<br>
Regards,<br>
Peter<div><div class="h5"><br>
<br>
<br>
On 03.06.2015 22:16, John Zhao wrote:<br>
</div></div></div><div><div class="h5">
<blockquote type="cite">
<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> <span>void</span> prepareHighwayNode(
<span>long</span> <span>osmId</span> )</p>
<p> {</p>
<p> <span>int</span> <span>tmpIndex</span>
= getNodeMap().get(<span>osmId</span>);</p>
<p> <span>if</span> (<span>tmpIndex</span>
== <span>EMPTY</span>)</p>
<p> {</p>
<p><span> </span>// osmId is
used exactly once</p>
<p> getNodeMap().put(<span>osmId</span>,
<span>PILLAR_NODE</span>);</p>
<p> } <span>else</span> <span>if</span> (<span>tmpIndex</span> > <span>EMPTY</span>)</p>
<p> {</p>
<p><span> </span>// mark node as
tower node as it occured at least twice times</p>
<p> getNodeMap().put(<span>osmId</span>,
<span>TOWER_NODE</span>);</p>
<p> } <span>else</span></p>
<p> {</p>
<p><span> </span>// tmpIndex is
already negative (already tower node)</p>
<p> }</p>
<p> }</p>
</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: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><br>
<br>
On 03.06.2015 21:05, John Zhao wrote:<br>
</div>
</div>
</div>
<div>
<div>
<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>
</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>