Hi Peter, Thanks for the explanation. I think the answer is: there is no merging logic to combine 2 different but connected OSM ways in GH. GH only chop the long OSM ways into several edges by the intersections.
*Best Regards,* *ZhiQiang ZHAO* On Wed, Jun 3, 2015 at 2:27 PM, Peter <[email protected]> wrote: > Hi John, > > the problem is as follows: > Assume the osm ways A-B-C (west to east) and D-E-F (north to south) > > 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. > > Regards, > Peter > > > On 03.06.2015 23:13, John Zhao wrote: > > Hi Peter, > > I am more confused. > I think the original question is: > If there are 2 different OSMways in original OSM data, they and only they > are connected. > And all the other tags are the same. > Does Graphhopper will merge them into a single edge in GH? > Then the graph is a little bit simplified. > > *Best Regards,* > *ZhiQiang ZHAO* > > On Wed, Jun 3, 2015 at 2:07 PM, Peter <[email protected]> wrote: > >> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> >>>>> 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 <[email protected]>: >>>>>> >>>>>> 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 <[email protected]> >>>>>> 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 >>>>>>> >>>>>>> >>>>> >>>> >>> >>> > > _______________________________________________ > GraphHopper mailing list > [email protected] > https://lists.openstreetmap.org/listinfo/graphhopper > >
_______________________________________________ GraphHopper mailing list [email protected] https://lists.openstreetmap.org/listinfo/graphhopper
