Help with Docker OSM not reading

I have seen several posts with a similar error but I was not able to fix the error from the other posts.

I trying to install openrouteService locally on the docker with the map of england, openrouteService is unable to read the .pbf file. I tried the Great Britain maps but it didn’t work, do I tried Englang, but it didn’t work either. What are you doing wrong?

I tried the docker image and create my own image with dockerFile.

The error always say:

2021-05-22 20:00:41,565 ERROR [routing.RoutingProfileManager] - java.util.concurrent.ExecutionException: java.lang.RuntimeException: Couldn’t process file data/osm_file.pbf, error: Can’t decode 50n000e_20101117_gmted_mea075.tif
2021-05-22 20:00:41,566 ERROR [routing.RoutingProfileManager] - Failed to initialize RoutingProfileManager instance.
java.util.concurrent.ExecutionException: java.lang.RuntimeException: Couldn’t process file data/osm_file.pbf, error: Can’t decode 50n000e_20101117_gmted_mea075.tif

Link of OSM tested:
https://download.geofabrik.de/europe/great-britain-latest.osm.pbf
https://download.geofabrik.de/europe/great-britain/england-latest.osm.pbf

My docker-compose:

version: ‘2.4’
services:
ors-app:
container_name: ors-app
ports:
- 8080:8080
- 9001:9001
image: openrouteservice/openrouteservice:latest
# build:
# context: …/
# args:
# APP_CONFIG: ./docker/conf/app.config
# OSM_FILE: ./docker/data/england-latest.osm.pbf
volumes:
- ./graphs:/ors-core/data/graphs
- ./elevation_cache:/ors-core/data/elevation_cache
- ./logs/ors:/var/log/ors
- ./logs/tomcat:/usr/local/tomcat/logs
- ./conf:/ors-conf
- ./data/england-latest.osm.pbf:/ors-core/data/osm_file.pbf
environment:
- BUILD_GRAPHS=False # Forces the container to rebuild the graphs, e.g. when PBF is changed
- “JAVA_OPTS=-Djava.awt.headless=true -server -XX:TargetSurvivorRatio=75 -XX:SurvivorRatio=64 -XX:MaxTenuringThreshold=3 -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:ParallelGCThreads=4 -Xms1g -Xmx2g”
- “CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.rmi.port=9001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost”

My DockerFile:
FROM openjdk:11-jdk

ENV MAVEN_OPTS="-Dmaven.repo.local=.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true"
ENV MAVEN_CLI_OPTS="--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"

ARG APP_CONFIG=./openrouteservice/src/main/resources/app.config.sample
ARG OSM_FILE=./docker/data/england-latest.osm.pbf

WORKDIR /ors-core

COPY openrouteservice /ors-core/openrouteservice
COPY $OSM_FILE /ors-core/data/osm_file.pbf
COPY $APP_CONFIG /ors-core/openrouteservice/src/main/resources/app.config.sample

# Install tomcat
RUN wget -q https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.39/bin/apache-tomcat-8.5.39.tar.gz -O /tmp/tomcat.tar.gz && \
    cd /tmp && \
    tar xvfz tomcat.tar.gz && \
    mkdir /usr/local/tomcat /ors-conf && \
    cp -R /tmp/apache-tomcat-8.5.39/* /usr/local/tomcat/ && \
    # Install dependencies and locales
    apt-get update -qq && apt-get install -qq -y locales nano maven moreutils jq && \
    locale-gen en_US.UTF-8 && \
    # Rename to app.config
    cp /ors-core/openrouteservice/src/main/resources/app.config.sample /ors-core/openrouteservice/src/main/resources/app.config && \
    # Replace paths in app.config to match docker setup
    jq '.ors.services.routing.sources[0] = "data/osm_file.pbf"' /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config && \
    jq '.ors.services.routing.profiles.default_params.elevation_cache_path = "data/elevation_cache"' /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config && \
    jq '.ors.services.routing.profiles.default_params.graphs_root_path = "data/graphs"' /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config && \
    # init_threads = 1, > 1 been reported some issues
    jq '.ors.services.routing.init_threads = 1' /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config && \
    # Delete all profiles but car
    jq 'del(.ors.services.routing.profiles.active[1,2,3,4,5,6,7,8])' /ors-core/openrouteservice/src/main/resources/app.config |sponge /ors-core/openrouteservice/src/main/resources/app.config

COPY ./docker-entrypoint.sh /docker-entrypoint.sh

# Start the container
EXPOSE 8080
ENTRYPOINT ["/bin/bash", "/docker-entrypoint.sh"]

And My LOG:
2021-05-22 19:59:29,888 INFO [routing.RoutingProfile] - [1] Profiles: ‘driving-car’, location: ‘data/graphs/car’.
2021-05-22 20:00:41,565 ERROR [routing.RoutingProfileManager] - java.util.concurrent.ExecutionException: java.lang.RuntimeException: Couldn’t process file data/osm_file.pbf, error: Can’t decode 50n000e_20101117_gmted_mea075.tif
2021-05-22 20:00:41,566 ERROR [routing.RoutingProfileManager] - Failed to initialize RoutingProfileManager instance.
java.util.concurrent.ExecutionException: java.lang.RuntimeException: Couldn’t process file data/osm_file.pbf, error: Can’t decode 50n000e_20101117_gmted_mea075.tif
at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:?]
at java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[?:?]
at org.heigit.ors.routing.RoutingProfileManager.initialize(RoutingProfileManager.java:167) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfileManager.getInstance(RoutingProfileManager.java:62) ~[classes/:6.5.0]
at org.heigit.ors.servlet.listeners.ORSInitContextListener.lambda$contextInitialized$0(ORSInitContextListener.java:40) ~[classes/:6.5.0]
at java.lang.Thread.run(Thread.java:829) [?:?]
Caused by: java.lang.RuntimeException: Couldn’t process file data/osm_file.pbf, error: Can’t decode 50n000e_20101117_gmted_mea075.tif
at com.graphhopper.reader.osm.OSMReader.writeOsm2Graph(OSMReader.java:326) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.readGraph(OSMReader.java:178) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.importData(GraphHopper.java:735) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.readData(GraphHopper.java:714) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.process(GraphHopper.java:701) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.importOrLoad(GraphHopper.java:680) ~[graphhopper-core-v0.13.13.jar:?]
at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.importOrLoad(ORSGraphHopper.java:155) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfile.initGraphHopper(RoutingProfile.java:191) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfile.(RoutingProfile.java:135) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:35) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:21) ~[classes/:6.5.0]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
… 1 more
Caused by: java.lang.RuntimeException: Can’t decode 50n000e_20101117_gmted_mea075.tif
at com.graphhopper.reader.dem.GMTEDProvider.generateRasterFromFile(GMTEDProvider.java:151) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.reader.dem.AbstractTiffElevationProvider.getEle(AbstractTiffElevationProvider.java:133) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.getElevation(OSMReader.java:715) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at org.heigit.ors.routing.graphhopper.extensions.ORSOSMReader.getElevation(ORSOSMReader.java:433) ~[classes/:6.5.0]
at com.graphhopper.reader.osm.OSMReader.addNode(OSMReader.java:676) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.processNode(OSMReader.java:641) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.writeOsm2Graph(OSMReader.java:293) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.readGraph(OSMReader.java:178) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.importData(GraphHopper.java:735) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.readData(GraphHopper.java:714) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.process(GraphHopper.java:701) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.importOrLoad(GraphHopper.java:680) ~[graphhopper-core-v0.13.13.jar:?]
at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.importOrLoad(ORSGraphHopper.java:155) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfile.initGraphHopper(RoutingProfile.java:191) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfile.(RoutingProfile.java:135) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:35) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:21) ~[classes/:6.5.0]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
… 1 more
Caused by: java.io.EOFException
at org.apache.xmlgraphics.image.codec.util.SeekableStream.readUnsignedShortLE(SeekableStream.java:513) ~[xmlgraphics-commons-2.3.jar:2.3]
at org.apache.xmlgraphics.image.codec.tiff.TIFFDirectory.readUnsignedShort(TIFFDirectory.java:565) ~[xmlgraphics-commons-2.3.jar:2.3]
at org.apache.xmlgraphics.image.codec.tiff.TIFFDirectory.getNumDirectories(TIFFDirectory.java:608) ~[xmlgraphics-commons-2.3.jar:2.3]
at org.apache.xmlgraphics.image.codec.tiff.TIFFImageDecoder.getNumPages(TIFFImageDecoder.java:81) ~[xmlgraphics-commons-2.3.jar:2.3]
at org.apache.xmlgraphics.image.codec.tiff.TIFFImageDecoder.decodeAsRenderedImage(TIFFImageDecoder.java:85) ~[xmlgraphics-commons-2.3.jar:2.3]
at org.apache.xmlgraphics.image.codec.util.ImageDecoderImpl.decodeAsRaster(ImageDecoderImpl.java:136) ~[xmlgraphics-commons-2.3.jar:2.3]
at org.apache.xmlgraphics.image.codec.util.ImageDecoderImpl.decodeAsRaster(ImageDecoderImpl.java:122) ~[xmlgraphics-commons-2.3.jar:2.3]
at com.graphhopper.reader.dem.GMTEDProvider.generateRasterFromFile(GMTEDProvider.java:149) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.reader.dem.AbstractTiffElevationProvider.getEle(AbstractTiffElevationProvider.java:133) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.getElevation(OSMReader.java:715) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at org.heigit.ors.routing.graphhopper.extensions.ORSOSMReader.getElevation(ORSOSMReader.java:433) ~[classes/:6.5.0]
at com.graphhopper.reader.osm.OSMReader.addNode(OSMReader.java:676) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.processNode(OSMReader.java:641) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.writeOsm2Graph(OSMReader.java:293) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.reader.osm.OSMReader.readGraph(OSMReader.java:178) ~[graphhopper-reader-osm-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.importData(GraphHopper.java:735) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.readData(GraphHopper.java:714) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.process(GraphHopper.java:701) ~[graphhopper-core-v0.13.13.jar:?]
at com.graphhopper.GraphHopper.importOrLoad(GraphHopper.java:680) ~[graphhopper-core-v0.13.13.jar:?]
at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.importOrLoad(ORSGraphHopper.java:155) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfile.initGraphHopper(RoutingProfile.java:191) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfile.(RoutingProfile.java:135) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:35) ~[classes/:6.5.0]
at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:21) ~[classes/:6.5.0]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
… 1 more
2021-05-22 20:00:41,574 INFO [routing.RoutingProfileManager] - ====> Recycling garbage…
2021-05-22 20:00:41,574 INFO [routing.RoutingProfileManager] - Before: Total - 1.88 GB, Free - 957.44 MB, Max: 2 GB, Used - 966.56 MB
2021-05-22 20:00:41,645 INFO [routing.RoutingProfileManager] - After: Total - 1024 MB, Free - 998.11 MB, Max: 2 GB, Used - 25.89 MB
2021-05-22 20:00:41,646 INFO [routing.RoutingProfileManager] - ========================================================================
2021-05-22 20:00:41,646 INFO [routing.RoutingProfileManager] - ====> Memory usage by profiles:
2021-05-22 20:00:41,650 INFO [routing.RoutingProfileManager] - Total: 0 B (0.0%)
2021-05-22 20:00:41,651 INFO [routing.RoutingProfileManager] - ========================================================================

Hi @Killdary_Aguiar_de_S

it looks like the elevation data has become corrupted during the download. The first thing to try would be to delete the contents of the ./elevation_cache folder on your local machine and then try running again.

Hi @adam ,

Thanks for you help,. I deleted the elevation cache and changed all the elevation parameters, but it still hadn’t worked.

But when I changed the values of -Xms and -Xmx it worked well, as the map was very large I think he needed these values to be higher, I changed them to 4Gb.

To make it clear who has the same problem:

  • In app.config.sample change all elevation properties to “false” and elevation_provider to “gmted”;
  • If the docker has already created the app.config in docker/conf, change or delete it, so the docker recreates correctly;
  • Delete elevation cache if it exists (docker/elevation_cache);
  • Delete graph cache if it exists (docker/graphs);

my docker-compose:

version: ‘2.4’
services:
ors-app:
container_name: ors-app
ports:
- 8080:8080
- 9001:9001
image: openrouteservice/openrouteservice:latest
volumes:
- ./graphs:/ors-core/data/graphs
- ./elevation_cache:/ors-core/data/elevation_cache
- ./logs/ors:/var/log/ors
- ./logs/tomcat:/usr/local/tomcat/logs
- ./conf:/ors-conf
- ./data/great-britain-210101.osm.pbf:/ors-core/data/osm_file.pbf
environment:
- BUILD_GRAPHS=False # Forces the container to rebuild the graphs, e.g. when PBF is changed
- “JAVA_OPTS=-Djava.awt.headless=true -server -XX:TargetSurvivorRatio=75 -XX:SurvivorRatio=64 -XX:MaxTenuringThreshold=3 -XX:+UseG1GC -XX:+ScavengeBeforeFullGC -XX:ParallelGCThreads=4 -Xms4g -Xmx4g”
- “CATALINA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9001 -Dcom.sun.management.jmxremote.rmi.port=9001 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost”

Thank you agan @adam.

1 Like

Great that you managed to get it working, and thanks for posting your solution :smiley: