<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hi John,<br>
<br>
the problem is as follows:<br>
Assume the osm ways A-B-C (west to east) and D-E-F (north to
south)<br>
<br>
Now if the node B is the same as F or E then we have a tower node
or junction. But if the nodes C and F are identical then this
would be a pillar node (and we handle it like a tower node). So
the import always assumes case 1 and we are always safe but in
some rare cases we could avoid creating a tower node.<br>
<br>
Regards,<br>
Peter<br>
<br>
On 03.06.2015 23:13, John Zhao wrote:<br>
</div>
<blockquote
cite="mid:CA+EBg9TM3qJLcx8kfxHMNH18CPkxWgbYRqsQnAfTNd8=cNBRSg@mail.gmail.com"
type="cite">
<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 moz-do-not-send="true"
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
moz-do-not-send="true"
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
moz-do-not-send="true"
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
moz-do-not-send="true"
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
moz-do-not-send="true" 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
moz-do-not-send="true" 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
moz-do-not-send="true" 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>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</blockquote>
<br>
</body>
</html>