[GraphHopper] Calculating paths & display routes (Android)

Bruno Marques baamarques at gmail.com
Mon Dec 23 12:35:52 UTC 2013


I think i was wrong, i'm calling
                tmpHopp.disableCHShortcuts();
so i guess i'm not using the CH !?!?

I still didnt get the VisitedNodes, i found the class but i still didnt get
access to create the log


On Fri, Dec 20, 2013 at 3:11 PM, Bruno Marques <baamarques at gmail.com> wrote:

> Yes, i'm using CH.
> I will look for that info, the visitedNodes, I will post more info when I
> get the logs
>
> thanks
>
>
> On Fri, Dec 20, 2013 at 1:18 PM, Peter K <peathal at yahoo.de> wrote:
>
>>  There is not enough memory to do the rehash of the internally used
>> HashMap. It could be that the Dalvik is not releasing it fast enough (which
>> could be slightly workarounded via reusing the datastructures of Dijkstra).
>>
>> Are you using CH? And can you log or find out somehow the visitedNodes of
>> the dijkstra algorithm? dijkstraBidirectionRef.getVisitedNodes()
>>
>> Regards,
>> Peter.
>>
>>  I'm calculating several paths between a few points of interest, i think
>> i'm having problems with leaking memory or somthing
>> With the log, can you see if some problem with the gh? or if its some
>> problem with my proj
>>
>>  12-20 11:03:24.669: E/dalvikvm-heap(10791): Out of memory on a
>> 7830620-byte allocation.
>> 12-20 11:03:24.669: I/dalvikvm(10791): "AsyncTask #3" prio=5 tid=15
>> RUNNABLE
>> 12-20 11:03:24.669: I/dalvikvm(10791):   | group="main" sCount=0
>> dsCount=0 obj=0x40774ff0 self=0x3ddfd8
>> 12-20 11:03:24.669: I/dalvikvm(10791):   | sysTid=10921 nice=10 sched=3/0
>> cgrp=default handle=3422784
>> 12-20 11:03:24.669: I/dalvikvm(10791):   | schedstat=( 34916079000
>> 976208000 2523 )
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> gnu.trove.map.hash.TIntObjectHashMap.rehash(TIntObjectHashMap.java:~157)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> gnu.trove.impl.hash.THash.postInsertHook(THash.java:388)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> gnu.trove.map.hash.TIntObjectHashMap.doPut(TIntObjectHashMap.java:248)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> gnu.trove.map.hash.TIntObjectHashMap.put(TIntObjectHashMap.java:222)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> com.graphhopper.routing.DijkstraBidirectionRef.fillEdges(DijkstraBidirectionRef.java:160)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> com.graphhopper.routing.DijkstraBidirectionRef.fillEdgesFrom(DijkstraBidirectionRef.java:200)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> com.graphhopper.routing.DijkstraBidirectionRef.calcPath(DijkstraBidirectionRef.java:106)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> com.graphhopper.GraphHopper.route(GraphHopper.java:615)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> com.graphhopper.android.MainActivity$9.doInBackground(MainActivity.java:618)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> com.graphhopper.android.MainActivity$9.doInBackground(MainActivity.java:1)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> android.os.AsyncTask$2.call(AsyncTask.java:185)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> java.util.concurrent.FutureTask.run(FutureTask.java:138)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
>> 12-20 11:03:24.669: I/dalvikvm(10791):   at
>> java.lang.Thread.run(Thread.java:1019)
>> 12-20 11:03:24.669: W/dalvikvm(10791): threadid=15: thread exiting with
>> uncaught exception (group=0x4001d560)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): FATAL EXCEPTION: AsyncTask #3
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): java.lang.RuntimeException:
>> An error occured while executing doInBackground()
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> android.os.AsyncTask$3.done(AsyncTask.java:200)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> java.util.concurrent.FutureTask.setException(FutureTask.java:125)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> java.util.concurrent.FutureTask.run(FutureTask.java:138)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> java.lang.Thread.run(Thread.java:1019)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): Caused by:
>> java.lang.OutOfMemoryError
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> gnu.trove.map.hash.TIntObjectHashMap.rehash(TIntObjectHashMap.java:157)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> gnu.trove.impl.hash.THash.postInsertHook(THash.java:388)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> gnu.trove.map.hash.TIntObjectHashMap.doPut(TIntObjectHashMap.java:248)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> gnu.trove.map.hash.TIntObjectHashMap.put(TIntObjectHashMap.java:222)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> com.graphhopper.routing.DijkstraBidirectionRef.fillEdges(DijkstraBidirectionRef.java:160)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> com.graphhopper.routing.DijkstraBidirectionRef.fillEdgesFrom(DijkstraBidirectionRef.java:200)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> com.graphhopper.routing.DijkstraBidirectionRef.calcPath(DijkstraBidirectionRef.java:106)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> com.graphhopper.GraphHopper.route(GraphHopper.java:615)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> com.graphhopper.android.MainActivity$9.doInBackground(MainActivity.java:618)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> com.graphhopper.android.MainActivity$9.doInBackground(MainActivity.java:1)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> android.os.AsyncTask$2.call(AsyncTask.java:185)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): at
>> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
>> 12-20 11:03:24.679: E/AndroidRuntime(10791): ... 4 more
>> 12-20 11:03:33.827: D/dalvikvm(10791): GC_EXPLICIT freed 26435K, 89% free
>> 3654K/32519K, external 4397K/5491K, paused 147ms
>>
>>
>>
>> On Tue, Dec 17, 2013 at 10:47 PM, Ignas Kapočius <
>> kapocius.ignas at gmail.com> wrote:
>>
>>>  What a fool of me - I somehow managed to mistaken folders while
>>> copying them and there were edges/geometry/etc files on my android device.
>>>
>>>  Sorry for all this spam and thank you for your help again!
>>>
>>>
>>>
>>>
>>>
>>>  ----------------------
>>>
>>>  Ignas Kapočius
>>>
>>>
>>>
>>> 2013/12/17 Peter K <peathal at yahoo.de>
>>>
>>>>   without a log file or more info of how your code looks like we
>>>> probably won't be able to help you :)
>>>>
>>>> Regards,
>>>> Peter.
>>>>
>>>>   I'll look into that, thank you!
>>>>
>>>>  What about extracting routing data for a specific city?
>>>> I've tried using bbike http://download.bbbike.org/osm/ , extracted
>>>> this:
>>>> http://download.bbbike.org/osm/extract/planet_25.1591,54.6528_25.3957,54.752.osm.pbf (Vilnius
>>>> city, Lithuania) and executed ./graphopper.sh import
>>>> vilnius-city-latest.osm.pmf
>>>>
>>>>  Then I've downloaded Lithuania map from here
>>>> http://download.mapsforge.org/maps/europe/ , created folder
>>>> vilnius-city-latest-gh and pasted it into Android file system.
>>>>
>>>>  When I run app it displays a map but when I try calculate distance
>>>> between two points (with your methods) app crashes.
>>>>
>>>>  Then i've tested it with australia map and it's routing data and it
>>>> works. So I'm guessing I have some problems with routing data that I've got
>>>> from bbbike and I've no idea how else to extract correct routing data.
>>>>
>>>>
>>>>
>>>>  ----------------------
>>>>
>>>>  Ignas Kapočius
>>>>
>>>>
>>>>
>>>> 2013/12/17 Peter K <peathal at yahoo.de>
>>>>
>>>>>  Hi Ignas,
>>>>>
>>>>> have a look into the android/ folder. There you see how it work. And
>>>>> you can set the algorithm in the GHRequest object. If contraction hierarchy
>>>>> is enabled only bidirectional algorithms will work. The GHResponse contains
>>>>> all the necessary information like points and instructions.
>>>>>
>>>>>  > Should I first make some kind of subgraph (due to efficiency)?
>>>>>
>>>>>  There are several techniques to make it faster like CH, but you could
>>>>> also use more heuristical routing algorithms, sorting the graph, in-memory
>>>>> instead memory mapped etc
>>>>>
>>>>> Regards,
>>>>> Peter.
>>>>>
>>>>>   Hello,
>>>>>
>>>>>  I've got Graphhopper going on my Android device.
>>>>>
>>>>>  Now my goal is to select two points on the map, apply one of the
>>>>> algorithms (Dijksta, A*, etc) and display results with an overlay.
>>>>>
>>>>>  Due to lack of documentation & being a little bit in a hurry, could
>>>>> somebody point me where/how to start?
>>>>>
>>>>>  I understand the basics - getting point's coordinates, displaying an
>>>>> overlay with results. The part where I'm confused is how to apply search
>>>>> algorithms in Graphhopper?
>>>>>
>>>>>  Should I first make some kind of subgraph (due to efficiency)?
>>>>> How can I get all the points (on streets, i.e.) between those two
>>>>> points?
>>>>> Is there something like getStreet(point1, point2) that gives you back
>>>>> most likely street between your two points?
>>>>>
>>>>>  Pardon my naivety, but I'm new to mapping, routing, etc & my BA
>>>>> thesis' handing in deadline is coming really fast. ;) any help appreciated!
>>>>>  ----------------------
>>>>>
>>>>>  Ignas Kapočius
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>
>> _______________________________________________
>> GraphHopper mailing list
>> GraphHopper at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/graphhopper
>>
>>
>
>
> --
> t
>



-- 
t
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/graphhopper/attachments/20131223/5c722d24/attachment.html>


More information about the GraphHopper mailing list