[GraphHopper] Calculating fastest path with A*/Dijkstra with CH disabled

mythex3cutioner . mizantropy at gmail.com
Sat Jan 11 16:07:25 UTC 2014


uhh, sorry for the spam.
i've tried it like this:

EdgeFilter edgFilt = new EdgeFilter()
                {
                    @Override
                    public boolean accept( EdgeIteratorState edgeIterState )
                    {
                        baseLat =
graph.getLatitude(fromRes.getClosestNode()); //fromRes - user's current
position
                        baseLon =
graph.getLongitude(fromRes.getClosestNode());
                        adjLat = graph.getLatitude(toRes.getClosestNode());
//toRes - destination
                        adjLon = graph.getLongitude(toRes.getClosestNode());
                        BBox bbox = new BBox(baseLat, baseLon, adjLat,
adjLon);
                        return bbox.contains(baseLat + baseLat*0.5, baseLon
+ baseLon * 0.5) || bbox.contains(adjLat + adjLat * 0.5, adjLon + adjLon *
0.5);


                    }
                };

yet it didn't even start algorithm - I think it found no usable nodes/edges



On Sat, Jan 11, 2014 at 6:04 PM, mythex3cutioner . <mizantropy at gmail.com>wrote:

> >No. First not in the method (in some outer scope instead) and second with
> your own limits not with the edge properties. Again: I have no idea what
> >you are trying ...
>
> I've tried to set a bounding box like this:
>
>
> On Sat, Jan 11, 2014 at 6:02 PM, mythex3cutioner . <mizantropy at gmail.com>wrote:
>
>> Well, I'm absolutely new to the maps & Android so sorry if I bother you.
>> I'm trying to manipulate some routing algorithms, basically, 'implement'
>> my own one but just for presentation purposes.
>>
>> My final goal's flowchart would look something like this
>> -The map is loaded and centered on device's coordinates provided by GPS
>> (can't find .setFocus() on mapsforge, heh;)) (pointA)
>> -User selects a point on the map, marker is added (pointB)
>> -Shortest/fastest path is calculated between those two points
>> -Second point is selected (pointB)
>> -Then the algorithm runs only inside my Bounding Box
>>
>> Since I've added manual weights to some of the edges, there should be
>> different times for calculations, different routes will be selected, etc.
>>
>> This is what I want to show - what are the differences when you apply
>> bounding box or put some insane traffic-weight on the edge while running
>> the same algorithm :)
>>
>> Best regards
>>
>>
>> On Sat, Jan 11, 2014 at 5:27 PM, Peter K <peathal at yahoo.de> wrote:
>>
>>>  > I mean, just simply like this?
>>>
>>> No. First not in the method (in some outer scope instead) and second
>>> with your own limits not with the edge properties. Again: I have no idea
>>> what you are trying ...
>>>
>>> > I saw examples but they imply that I create algorithms object manually
>>> and I don't want to since
>>> > I intend to keep the same Graphhopper.java structure (more or less)
>>> that's very usable with Android.
>>>
>>> You can extend the GraphHopper class and overwrite the necessary methods
>>> to call setEdgeFilter I think.
>>>
>>> Regards,
>>> Peter.
>>>
>>>
>>>
>>> On Fri, Jan 10, 2014 at 11:23 PM, Peter K <peathal at yahoo.de> wrote:
>>>
>>>>  Hey,
>>>>
>>>>   >This is called geocoding and not provided by GraphHopper. Although
>>>> we
>>>> >have some (closed source) prototype we still recommend other existing
>>>> >solutions.
>>>>
>>>>  Isn't there a way then to somehow manually find which node/edge ID is
>>>> associated with street name by reading routing data provided from
>>>> graphopper.sh script? I only need to figure out 5-10 street's names
>>>> associated with their edge/node ids so that I could manipulate them via
>>>> hardcoding. I mean, yes, it's that unpractical and basic but that's my goal
>>>> here :)
>>>>
>>>>
>>>>  yes, sure: loop over all edges! This extremely expensive and
>>>> error-prone as there are multiple identical named streets even in one city!
>>>> But you can find the names:
>>>>
>>>> EdgeIterator iter = getAllEdges();
>>>> while (iter.next())
>>>> {
>>>>       iter.getName()
>>>>
>>>> }
>>>>
>>>>  >Where the last option probably would be the simplest one as there is
>>>> >already a (hidden) method for it in OSMReader called isInBounds or just
>>>> >use OSM tools like osmosis:
>>>> >http://wiki.openstreetmap.org/wiki/Osmosis#Extracting_bounding_boxes
>>>> >
>>>> >Or do you need to define it per request? What is your usecase?
>>>>
>>>>  Yes, my usecase would be to define per request:
>>>> -First request calculates the fastest path
>>>> -Point A is moving inside the map (GPS tracking on)
>>>> -Timer should recalculate path each 30s or so
>>>>
>>>>
>>>>  Ok, but why would you need to find a path in a subgraph - to limit
>>>> search space? Wouldn't it make more sense to re-compute the whole path
>>>> (where you could reuse parts of the old result) or if that is too expensive
>>>> you could re-compute a path in a bounding box leading you back to the
>>>> original path.
>>>>
>>>>
>>>>
>>>>  > >* limit the search to only nodes in this area (this is only
>>>> possible if no CH is used)
>>>>  > >
>>>>   > how is this possible to implement?
>>>>
>>>>  Will work for none CH only. You'll have to tweak the algorithm to
>>>> accept only edges which are in the bounds:
>>>> edgeFilter = new EdgeFilter() {
>>>>    accept(EdgeIteratorState state) {
>>>>       base = state.getBaseNode();
>>>>       adj = state.getAdjNode();
>>>>       int baseLat = graph.getLatitude(base);
>>>>       int baseLon = graph.getLatitude(base);
>>>> ...
>>>>       return bbox.contains(baseLat, baseLon) || bbox.contains(adjLat,
>>>> adjLon);
>>>>    }
>>>> }
>>>> dijkstra.setEdgeFilter(edgeFilter);
>>>>
>>>> Regards,
>>>> Peter.
>>>>
>>>> _______________________________________________
>>>> GraphHopper mailing list
>>>> GraphHopper at openstreetmap.org
>>>> https://lists.openstreetmap.org/listinfo/graphhopper
>>>>
>>>>
>>>
>>>
>>> _______________________________________________
>>> GraphHopper mailing listGraphHopper at openstreetmap.orghttps://lists.openstreetmap.org/listinfo/graphhopper
>>>
>>>
>>>
>>> _______________________________________________
>>> GraphHopper mailing list
>>> GraphHopper at openstreetmap.org
>>> https://lists.openstreetmap.org/listinfo/graphhopper
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/graphhopper/attachments/20140111/2dd91e0d/attachment.html>


More information about the GraphHopper mailing list