Я тестировал графический процессор на Android в течение нескольких недель на разных устройствах. Сегодня у меня возникла ошибка OutOfMemory при выполнении функции LoadHopper load (...). Это происходит на телефоне Xiaomi Mi4. График экспортируется для автомобилей, велосипедов и ножек с самым быстрым и коротким весом. Все графические файлы составляют более 1,17 ГБ.Graphhopper. Могу ли я загружать только часть графических файлов, чтобы избежать ошибки OutOfMemory?
Я попытался это: Для того, чтобы сохранить память, я удалил все файлы, специфичные для других транспортных средств, чем автомобиль: nodes_ch_fastest_bike, shortcuts_fastest_bike, shortcuts_fastest_foot и т.д.
и модифицирована 2 строки в файле свойств:
Я снял флаг кодеры кроме автомобиля:
graph.flag_encoders=car|speed_factor=5.0|speed_bits=5|turn_costs=false|version=1
и удалены, кроме автомобиля Веса
graph.ch.weightings=[fastest|car, shortest|car]
Теперь загружен правильно :-)
Вопрос заключается в том, можно ли безопасно изменить свойства файла таким образом (возможно удаление файлов не было необходимости?) Загружать только данные о транспортном средстве, выбранные пользователем (если пользователь изменяет автомобиля во время выполнения приложения , график закрывается, тогда файл свойств изменяется для установки правильных кодеров, а весы и график снова загружаются).
Я ве заметил, что остальные файлы, кроме имен, то есть: узлов, ребро, геометрия, location_index уготованного граф, поддерживающий все транспортные средства (автомобиль, мотоцикл, нога) различаются по размеру по сравнению с графически файлами, подготовленных только для автомобиля. Я полагаю, это связано с кодированием. Хотя кажется, что он работает правильно, я не знаю точной структуры графика, и я бы хотел избежать любой несогласованности.
Благодаря
UPDATE: Я проверил это, и это временное решение работает на машине, но не может иногда при расчете маршрута для велосипедов и автомобилей транспортных средств (как короткий и быстрый весовыми). Исключение:
java.lang.RuntimeException: Ошибка при выполнении doInBackground() в android.os.AsyncTask $ 3.done (AsyncTask.java:309) в java.util.concurrent.FutureTask. finishCompletion (FutureTask.java:354) на java.util.concurrent.FutureTask.setException (FutureTask.java:223) на java.util.concurrent.FutureTask.run (FutureTask.java:242) на android.os. AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:234) на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1113) на java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:588) at java.lang.Thread.run (Thread.java:818) Вызвано: java.lang.IllegalStateException: для вычисления времени не требуется считывать скорость с края в неправильном направлении. Reverse: true, fwd: false, bwd: false at com.graphhopper.routing.Path.calcMillis (Path.java:253) at com.graphhopper.routing.ch.Path4CH.expandEdge (Path4CH.java:56) at com.graphhopper.routing.ch.Path4CH.expandEdge (Path4CH.java:96) at com.graphhopper.routing.ch.Path4CH.expandEdge (Path4CH.java:96) at com.graphhopper.routing.ch.Path4CH .expandEdge (Path4CH.java:103) at com.graphhopper.routing.ch.Path4CH.expandEdge (Path4CH.java:96) at com.graphhopper.routing.ch.Path4CH.expandEdge (Path4CH.java:96) at com.graphhopper.routing.ch.Path4CH.expandEdge (Path4CH.java:96) at com.graphhopper.routing.ch.Path4CH.expandEdge (Path4CH.java:103) at com.graphhopper.routing.ch.Path4CH.processEdge (Path4CH.java:46) at com.graphhopper.routing.PathBidirRef.extract (PathBidirRef.java:92) at com.graphhopper.routing.DijkstraBidirectionRef.extractPath (DijkstraBidirectionRef. Java: 130) в com.graphhopper.routing.AbstractBidirAlgo.calcPath (AbstractBidirAlgo.java:64) на com.graphhopper.routing.AbstractRoutingAlgorithm.calcPaths (AbstractRoutingAlgorithm.java:120) на com.graphhopper.routing.template. ViaRoutingTemplate.calcPaths (ViaRoutingTemplate.java:110) at com.graphhopper.G raphHopper.calcPaths (GraphHopper.java:1098) в com.graphhopper.GraphHopper.route (GraphHopper.java:1003)
Спасибо за вашу поддержку! –
Какую версию GraphHopper вы используете? – Karussell
Я использую версию 0.7. –