<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>