Computing Isochrones with fastisochrones

Hi! I am trying to compute isochrones for a project of mine and I am succeeding in computing isochrones for over an hour (2 hours with intervals of 30 minutes) with the local deployment through Docker. However these isochrones take a long time to compute and I have a long list of points for which I would like to have the isochrones.
I saw in the config files (example-ors-config.yml & example-ors-config.env) that there are some configuration values for fastisochrones under isochrones, but I am wondering how can I make use of these fast isochrones? I actually do not mind if the result is somewhat approximative since I only need a rough estimate but I need to be fast.
For information I am configuring the openrouteservice instance via the ors-config.env file and I am trying to get isochrones all over metropolitan France.

Any help would be appreciated! Thanks in advance.

Hi @felipe-notilus,

this is still undocumented :sweat: .
Check our test config for the correct position to configure this:

And translate from yml to env by hierarchy.

Also see ors.endpoints.isochrones | openrouteservice backend documentation

Best regards

Hi @amandus!

Thank you for your reply. I added these lines in the profile that I am using (car) but the behaviour does not seem to change. I deleted the graph folder so that it would be rebuilt from scratch. Is there anything else I should change in the usage, such as the endpoint name or maybe an extra parameter to be passed on when I perform the api call?

Thanks again!

Felipe.

Hi @felipe-notilus

did you also add entries for:
ors.endpoints.isochrones.fastisochrones ?
If you did, maybe provide your full config as well as the request you are trying

Best regards

I do have entries for ors.endpoints.isochrones.fastisochrones. Here are the uncommented lines from the ors-config.env file:

ors.endpoints.isochrones.enabled=true
ors.endpoints.isochrones.attribution=openrouteservice.org, OpenStreetMap contributors
ors.endpoints.isochrones.maximum_locations=2
ors.endpoints.isochrones.maximum_intervals=6
ors.endpoints.isochrones.allow_compute_area=true
ors.endpoints.isochrones.maximum_range_distance_default=50000
ors.endpoints.isochrones.maximum_range_distance.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.maximum_range_distance.0.value=100000
ors.endpoints.isochrones.maximum_range_time_default=18000
ors.endpoints.isochrones.maximum_range_time.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.maximum_range_time.0.value=8000
ors.endpoints.isochrones.fastisochrones.maximum_range_distance_default=50000
ors.endpoints.isochrones.fastisochrones.maximum_range_distance.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.fastisochrones.maximum_range_distance.0.value=500000
ors.endpoints.isochrones.fastisochrones.maximum_range_time_default=18000
ors.endpoints.isochrones.fastisochrones.maximum_range_time.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.fastisochrones.maximum_range_time.0.value=10800
ors.engine.source_file=/home/ors/files/merge_of_4.osm.pbf
ors.engine.profiles.car.enabled=true
ors.engine.profiles.car.profile=driving-car
ors.engine.profiles.car.elevation=false
ors.engine.profiles.car.encoder_options.turn_costs=true
ors.engine.profiles.car.encoder_options.block_fords=false
ors.engine.profiles.car.encoder_options.use_acceleration=true
ors.engine.profiles.car.preparation.min_network_size=200
ors.engine.profiles.car.preparation.methods.fastisochrones.enabled=true
ors.engine.profiles.car.preparation.methods.fastisochrones.threads=12
ors.engine.profiles.car.preparation.methods.fastisochrones.weightings=recommended, shortest
ors.engine.profiles.car.preparation.methods.fastisochrones.maxcellnodes=5000

I also tried adding a line ors.endpoints.isochrones.fastisochrones.enabled=true to no avail. The .osm.pbf file is a custom one grouping about 4 departments of France. The ors-config.env file is located at the same level as the docker-compose.yml file, and I know it is taken into account because the behaviour changes if I change the time limit for example.

The request I am executing to get the isochrones is the following:

import requests

max_time = 7200

dampierre = [1.9882237263532425, 48.70487141802938]
heidelberg = [8.681495,49.41461]

body = {
    "locations":[dampierre],
    "range_type": "time",
    "range":[max_time],
    "interval": int(max_time/4)
    }

headers = {
    'Accept': 'application/json, application/geo+json, application/gpx+xml, img/png; charset=utf-8',
    'Content-Type': 'application/json; charset=utf-8'
}
call = requests.post('http://localhost:8080/ors/v2/isochrones/driving-car', json=body, headers=headers)

Thank you again and here’s the full ors-config.env file with all the lines:

#server.port=8082
#server.error.whitelabel.enabled=false
#server.servlet.context-path=/ors
#spring.profiles.active=default
#spring.mvc.servlet.path=/
#springdoc.swagger-ui.enabled=true
#springdoc.swagger-ui.path=/swagger-ui
#springdoc.swagger-ui.tryItOutEnabled=true
#springdoc.swagger-ui.filter=false
#springdoc.swagger-ui.syntaxHighlight.activated=true
#springdoc.swagger-ui.showExtensions=true
#springdoc.api-docs.path=/v2/api-docs
#springdoc.api-docs.version=OPENAPI_3_0
#springdoc.packages-to-scan=org.heigit.ors
#springdoc.pathsToMatch=/v2/**
#logging.file.name=./logs/ors.log
#logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %highlight{%-7p} %style{%50t}{Cyan} %style{[ %-40.40c{1.} ]}{Bright Cyan}   %m%n
#logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} %p [%-40.40c{1.}] - %m%n
#logging.level.root=WARN
#logging.level.org.heigit=INFO
#ors.cors.allowed_origins=*
#ors.cors.allowed_headers=Content-Type, X-Requested-With, accept, Origin, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization
#ors.cors.preflight_max_age=600
#ors.messages=
#ors.endpoints.routing.enabled=true
#ors.endpoints.routing.attribution=openrouteservice.org, OpenStreetMap contributors, tmc - BASt
#ors.endpoints.routing.gpx_name=ORSRouting
#ors.endpoints.routing.gpx_description=This is a directions instructions file as GPX, generated from openrouteservice
#ors.endpoints.routing.gpx_base_url=https://openrouteservice.org/
#ors.endpoints.routing.gpx_support_mail=support@openrouteservice.org
#ors.endpoints.routing.gpx_author=openrouteservice
#ors.endpoints.routing.gpx_content_licence=LGPL 3.0
#ors.endpoints.routing.maximum_avoid_polygon_area=200000000
#ors.endpoints.routing.maximum_avoid_polygon_extent=20000
#ors.endpoints.routing.maximum_alternative_routes=3
#ors.endpoints.matrix.enabled=true
#ors.endpoints.matrix.attribution=openrouteservice.org, OpenStreetMap contributors
#ors.endpoints.matrix.maximum_routes=2500
#ors.endpoints.matrix.maximum_routes_flexible=25
#ors.endpoints.matrix.maximum_visited_nodes=100000
#ors.endpoints.matrix.maximum_search_radius=2000
#ors.endpoints.matrix.u_turn_costs=-1
ors.endpoints.isochrones.enabled=true
ors.endpoints.isochrones.attribution=openrouteservice.org, OpenStreetMap contributors
ors.endpoints.isochrones.maximum_locations=2
ors.endpoints.isochrones.maximum_intervals=6
ors.endpoints.isochrones.allow_compute_area=true
ors.endpoints.isochrones.maximum_range_distance_default=50000
ors.endpoints.isochrones.maximum_range_distance.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.maximum_range_distance.0.value=100000
ors.endpoints.isochrones.maximum_range_time_default=18000
ors.endpoints.isochrones.maximum_range_time.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.maximum_range_time.0.value=8000
ors.endpoints.isochrones.fastisochrones.maximum_range_distance_default=50000
ors.endpoints.isochrones.fastisochrones.maximum_range_distance.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.fastisochrones.maximum_range_distance.0.value=500000
ors.endpoints.isochrones.fastisochrones.maximum_range_time_default=18000
ors.endpoints.isochrones.fastisochrones.maximum_range_time.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.fastisochrones.maximum_range_time.0.value=10800
#ors.endpoints.isochrones.statistics_providers.enabled=true
#ors.endpoints.isochrones.statistics_providers.provider_name=
#ors.endpoints.isochrones.statistics_providers.property_mapping=
#ors.endpoints.isochrones.statistics_providers.provider_parameters.host=
#ors.endpoints.isochrones.statistics_providers.provider_parameters.port=
#ors.endpoints.isochrones.statistics_providers.provider_parameters.user=
#ors.endpoints.isochrones.statistics_providers.provider_parameters.password=
#ors.endpoints.isochrones.statistics_providers.provider_parameters.db_name=
#ors.endpoints.isochrones.statistics_providers.provider_parameters.table_name=
#ors.endpoints.isochrones.statistics_providers.provider_parameters.geometry_column=rast
#ors.endpoints.isochrones.statistics_providers.provider_parameters.postgis_version=3.4
#ors.endpoints.Snap.enabled=true
#ors.endpoints.Snap.attribution=openrouteservice.org, OpenStreetMap contributors
ors.engine.source_file=/home/ors/files/merge_of_4.osm.pbf
#ors.engine.init_threads=1
#ors.engine.preparation_mode=false
#ors.engine.graphs_root_path=./graphs
#ors.engine.graphs_data_access=RAM_STORE
#ors.engine.elevation.preprocessed=false
#ors.engine.elevation.data_access=MMAP
#ors.engine.elevation.cache_clear=false
#ors.engine.elevation.provider=multi
#ors.engine.elevation.cache_path=./elevation_cache
#ors.engine.profile_default.enabled=false
#ors.engine.profile_default.elevation=false
#ors.engine.profile_default.elevation_smoothing=false
#ors.engine.profile_default.encoder_flags_size=8
#ors.engine.profile_default.instructions=true
#ors.engine.profile_default.optimize=false
#ors.engine.profile_default.traffic=false
#ors.engine.profile_default.maximum_distance=100000
#ors.engine.profile_default.maximum_distance_dynamic_weights=100000
#ors.engine.profile_default.maximum_distance_avoid_areas=100000
#ors.engine.profile_default.maximum_waypoints=50
#ors.engine.profile_default.maximum_snapping_radius=400
#ors.engine.profile_default.maximum_distance_alternative_routes=100000
#ors.engine.profile_default.maximum_distance_round_trip_routes=100000
#ors.engine.profile_default.maximum_speed_lower_bound=80
#ors.engine.profile_default.maximum_visited_nodes=1000000
#ors.engine.profile_default.location_index_resolution=500
#ors.engine.profile_default.location_index_search_iterations=4
#ors.engine.profile_default.force_turn_costs=false
#ors.engine.profile_default.interpolate_bridges_and_tunnels=true
#ors.engine.profile_default.preparation.min_network_size=200
#ors.engine.profile_default.preparation.methods.lm.enabled=true
#ors.engine.profile_default.preparation.methods.lm.threads=1
#ors.engine.profile_default.preparation.methods.lm.weightings=recommended,shortest
#ors.engine.profile_default.preparation.methods.lm.landmarks=16
#ors.engine.profile_default.execution.methods.lm.active_landmarks=8
ors.engine.profiles.car.enabled=true
ors.engine.profiles.car.profile=driving-car
ors.engine.profiles.car.elevation=false
ors.engine.profiles.car.encoder_options.turn_costs=true
ors.engine.profiles.car.encoder_options.block_fords=false
ors.engine.profiles.car.encoder_options.use_acceleration=true
ors.engine.profiles.car.preparation.min_network_size=200
ors.engine.profiles.car.preparation.methods.fastisochrones.enabled=true
ors.engine.profiles.car.preparation.methods.fastisochrones.threads=12
ors.engine.profiles.car.preparation.methods.fastisochrones.weightings=recommended, shortest
ors.engine.profiles.car.preparation.methods.fastisochrones.maxcellnodes=5000
#ors.engine.profiles.car.preparation.methods.ch.enabled=true
#ors.engine.profiles.car.preparation.methods.ch.threads=1
#ors.engine.profiles.car.preparation.methods.ch.weightings=fastest
#ors.engine.profiles.car.preparation.methods.lm.enabled=false
#ors.engine.profiles.car.preparation.methods.lm.threads=1
#ors.engine.profiles.car.preparation.methods.lm.weightings=fastest,shortest
#ors.engine.profiles.car.preparation.methods.lm.landmarks=16
#ors.engine.profiles.car.preparation.methods.core.enabled=true
#ors.engine.profiles.car.preparation.methods.core.threads=1
#ors.engine.profiles.car.preparation.methods.core.weightings=fastest,shortest
#ors.engine.profiles.car.preparation.methods.core.landmarks=64
#ors.engine.profiles.car.preparation.methods.core.lmsets=highways;allow_all
#ors.engine.profiles.car.execution.methods.lm.active_landmarks=6
#ors.engine.profiles.car.execution.methods.core.active_landmarks=6
#ors.engine.profiles.car.ext_storages.WayCategory=
#ors.engine.profiles.car.ext_storages.HeavyVehicle=
#ors.engine.profiles.car.ext_storages.WaySurfaceType=
#ors.engine.profiles.car.ext_storages.RoadAccessRestrictions.use_for_warnings=true
#ors.engine.profiles.hgv.enabled=false
#ors.engine.profiles.hgv.profile=driving-hgv
#ors.engine.profiles.hgv.encoder_flags_size=8
#ors.engine.profiles.hgv.encoder_options.turn_costs=true
#ors.engine.profiles.hgv.encoder_options.block_fords=false
#ors.engine.profiles.hgv.encoder_options.use_acceleration=true
#ors.engine.profiles.hgv.maximum_distance=100000
#ors.engine.profiles.hgv.elevation=true
#ors.engine.profiles.hgv.preparation.min_network_size=200
#ors.engine.profiles.hgv.preparation.methods.ch.enabled=true
#ors.engine.profiles.hgv.preparation.methods.ch.threads=1
#ors.engine.profiles.hgv.preparation.methods.ch.weightings=recommended
#ors.engine.profiles.hgv.preparation.methods.core.enabled=true
#ors.engine.profiles.hgv.preparation.methods.core.threads=1
#ors.engine.profiles.hgv.preparation.methods.core.weightings=recommended,shortest
#ors.engine.profiles.hgv.preparation.methods.core.landmarks=64
#ors.engine.profiles.hgv.preparation.methods.core.lmsets=highways;allow_all
#ors.engine.profiles.hgv.execution.methods.core.active_landmarks=6
#ors.engine.profiles.hgv.ext_storages.WayCategory=
#ors.engine.profiles.hgv.ext_storages.HeavyVehicle.restrictions=true
#ors.engine.profiles.hgv.ext_storages.WaySurfaceType=
#ors.engine.profiles.bike-regular.enabled=false
#ors.engine.profiles.bike-regular.profile=cycling-regular
#ors.engine.profiles.bike-regular.encoder_options.consider_elevation=true
#ors.engine.profiles.bike-regular.encoder_options.turn_costs=true
#ors.engine.profiles.bike-regular.encoder_options.block_fords=false
#ors.engine.profiles.bike-regular.elevation=true
#ors.engine.profiles.bike-regular.ext_storages.WayCategory=
#ors.engine.profiles.bike-regular.ext_storages.WaySurfaceType=
#ors.engine.profiles.bike-regular.ext_storages.HillIndex=
#ors.engine.profiles.bike-regular.ext_storages.TrailDifficulty=
#ors.engine.profiles.bike-mountain.enabled=false
#ors.engine.profiles.bike-mountain.profile=cycling-mountain
#ors.engine.profiles.bike-mountain.encoder_options.consider_elevation=true
#ors.engine.profiles.bike-mountain.encoder_options.turn_costs=true
#ors.engine.profiles.bike-mountain.encoder_options.block_fords=false
#ors.engine.profiles.bike-mountain.elevation=true
#ors.engine.profiles.bike-mountain.ext_storages.WayCategory=
#ors.engine.profiles.bike-mountain.ext_storages.WaySurfaceType=
#ors.engine.profiles.bike-mountain.ext_storages.HillIndex=
#ors.engine.profiles.bike-mountain.ext_storages.TrailDifficulty=
#ors.engine.profiles.bike-road.enabled=false
#ors.engine.profiles.bike-road.profile=cycling-road
#ors.engine.profiles.bike-road.encoder_options.consider_elevation=true
#ors.engine.profiles.bike-road.encoder_options.turn_costs=true
#ors.engine.profiles.bike-road.encoder_options.block_fords=false
#ors.engine.profiles.bike-road.elevation=true
#ors.engine.profiles.bike-road.ext_storages.WayCategory=
#ors.engine.profiles.bike-road.ext_storages.WaySurfaceType=
#ors.engine.profiles.bike-road.ext_storages.HillIndex=
#ors.engine.profiles.bike-road.ext_storages.TrailDifficulty=
#ors.engine.profiles.bike-electric.enabled=false
#ors.engine.profiles.bike-electric.profile=cycling-electric
#ors.engine.profiles.bike-electric.encoder_options.consider_elevation=true
#ors.engine.profiles.bike-electric.encoder_options.turn_costs=true
#ors.engine.profiles.bike-electric.encoder_options.block_fords=false
#ors.engine.profiles.bike-electric.elevation=true
#ors.engine.profiles.bike-electric.ext_storages.WayCategory=
#ors.engine.profiles.bike-electric.ext_storages.WaySurfaceType=
#ors.engine.profiles.bike-electric.ext_storages.HillIndex=
#ors.engine.profiles.bike-electric.ext_storages.TrailDifficulty=
#ors.engine.profiles.walking.enabled=false
#ors.engine.profiles.walking.profile=foot-walking
#ors.engine.profiles.walking.encoder_options.block_fords=false
#ors.engine.profiles.walking.elevation=true
#ors.engine.profiles.walking.ext_storages.WayCategory=
#ors.engine.profiles.walking.ext_storages.WaySurfaceType=
#ors.engine.profiles.walking.ext_storages.HillIndex=
#ors.engine.profiles.walking.ext_storages.TrailDifficulty=
#ors.engine.profiles.hiking.enabled=false
#ors.engine.profiles.hiking.profile=foot-hiking
#ors.engine.profiles.hiking.encoder_options.block_fords=false
#ors.engine.profiles.hiking.elevation=true
#ors.engine.profiles.hiking.ext_storages.WayCategory=
#ors.engine.profiles.hiking.ext_storages.WaySurfaceType=
#ors.engine.profiles.hiking.ext_storages.HillIndex=
#ors.engine.profiles.hiking.ext_storages.TrailDifficulty=
#ors.engine.profiles.wheelchair.enabled=false
#ors.engine.profiles.wheelchair.profile=wheelchair
#ors.engine.profiles.wheelchair.encoder_options.block_fords=true
#ors.engine.profiles.wheelchair.elevation=true
#ors.engine.profiles.wheelchair.maximum_snapping_radius=50
#ors.engine.profiles.wheelchair.ext_storages.WayCategory=
#ors.engine.profiles.wheelchair.ext_storages.WaySurfaceType=
#ors.engine.profiles.wheelchair.ext_storages.Wheelchair.KerbsOnCrossings=true
#ors.engine.profiles.wheelchair.ext_storages.OsmId=
#ors.engine.profiles.public-transport.enabled=false
#ors.engine.profiles.public-transport.profile=public-transport
#ors.engine.profiles.public-transport.encoder_options.block_fords=false
#ors.engine.profiles.public-transport.elevation=true
#ors.engine.profiles.public-transport.maximum_visited_nodes=1000000
#ors.engine.profiles.public-transport.gtfs_file=./src/test/files/vrn_gtfs_cut.zip

Hey,

would you mind sharing your docker-compose.yml?

Best regards

Hi Jakob, sure here it is:

# Docker Compose file for the openrouteservice (ORS) application
# Documentation and examples can be found on https://giscience.github.io/openrouteservice/run-instance/running-with-docker
version: '3.8'

services:
  # ----------------- ORS application configuration ------------------- #
  ors-app:
    # Activate the following lines to build the container from the repository
    # You have to add --build to the docker compose command to do so
    build:
      context: ./
    container_name: ors-app
    ports:
      - "8080:8082"  # Expose the ORS API on port 8080
      - "9001:9001"  # Expose additional port for monitoring (optional)
    image: openrouteservice/openrouteservice:v8.0.0
    # Advanced option! If you different ids to 0:0 and 1000:1000, you have to rebuild the container with the build args UID,GID.
    # The user command is useful if you want easier bind mount access or better security.
    #user: "1000:1000" # Run "mkdir -p ors-docker/config ors-docker/elevation_cache ors-docker/files ors-docker/graphs ors-docker/logs && sudo chown -R 1000:1000 ors" before starting the container!
    volumes:  # Mount relative directories. ONLY for local container runtime. To switch to docker managed volumes see 'Docker Volumes configuration' section below.
      - ./ors-docker:/home/ors  # Mount the ORS application directory (for logs, graphs, elevation_cache, etc.) into its own directory
      #- ./graphs:/home/ors/graphs  # Mount graphs directory individually
      #- ./elevation_cache:/home/ors/elevation_cache  # Mount elevation cache directory individually
      #- ./config:/home/ors/config  # Mount configuration directory individually
      #- ./logs:/home/ors/logs  # Mount logs directory individually
      #- ./files:/home/ors/files  # Mount files directory individually
    environment:
      REBUILD_GRAPHS: False  # Set to True to rebuild graphs on container start.
      CONTAINER_LOG_LEVEL: INFO  # Log level for the container. Possible values: DEBUG, INFO, WARNING, ERROR, CRITICAL
      # If you don't want the default ors-config.yml you can specify a custom file name, that should match the file in
      # your 'config' volume mount.
      #ORS_CONFIG_LOCATION: /home/ors/config/my-ors-config.yml  # Location of your ORS configuration file in the docker container

      # ------------------ JAVA OPTS ------------------ #
      # Configure the memory settings for JAVA or pass additional opts
      # Fore more available ENV properties see Prepare CATALINA_OPTS and JAVA_OPTS
      # in https://github.com/GIScience/openrouteservice/blob/main/docker-entrypoint.sh
      XMS: 1g  # start RAM assigned to java
      XMX: 2g  # max RAM assigned to java. Rule of Thumb: <PBF-size> * <profiles> * 2
      # Example: 1.5 GB pbf size, two profiles (car and foot-walking)
      # -> 1.5 * 2 * 2 = 6. Set xmx to be AT LEAST `-Xmx6g`
      ADDITIONAL_JAVA_OPTS: ""  # further options you want to pass to the java command

      # ----------------- Properties configuration ------------------- #
      # Configure your whole container with only property ENVs.
      # These can be set alternatively or additionally to the yml configuration file.
      # Note, that any values set will override the corresponding values from the yml configuration file.
      # See the ors-config.env file for more options.
      # To have a configuration file-less container, uncomment at least the following properties.
      # The values are examples and provide the default configuration.
      #ors.engine.source_file: /home/ors/files/example-heidelberg.osm.gz
      #ors.engine.graphs_root_path: /home/ors/graphs
      #ors.engine.elevation.cache_path: /home/ors/elevation_cache
      #ors.engine.profiles.car.enabled: true

    # ----------------- ENV file configuration ------------------- #
    # Too many variables for your 'environment:' section?
    # Use an env_file with the ENV properties instead and define everything in there:
    # Values will be overwritten if set in the 'environment' section.
    env_file: ors-config.env

    # ----------------- Healthcheck configuration ------------------- #
    # The healthcheck is disabled by default. Uncomment the following lines to enable it.
    # The healthcheck allows you to monitor the status of the ORS application.
    # Be careful with long graph builds, as the healthcheck will fail and show 'unhealthy' during this time.
    # This is especially useful if you run your ORS container in a production environment.
    #healthcheck:
    #  test: wget --no-verbose --tries=1 --spider http://localhost:8082/ors/v2/health || exit 1
    #  start_period: 1m
    #  interval: 10s
    #  timeout: 2s
    #  retries: 3
    #  disable: false

# ----------------- Docker Volumes configuration ------------------- #
# Define the Docker managed volumes for the ORS application. For more info on Docker Volumes see https://docs.docker.com/compose/compose-file/07-volumes/
# Volumes are used to persist the data and configuration of the ORS application.
# If you want to use volumes, uncomment the following lines and remove the ./ prefix from the volume paths in 'services.ors-app.volumes'.
#volumes:
#    graphs:
#    elevation_cache:
#    config:
#    logs:
#    files:

I have also ran ORS on a VM and in that case the only thing I have changed is the allocated ram to java to follow the rule of thumb. Other than that the only change has been to uncomment the line env_file: ors-config.env.

Thank you :slight_smile:

Hey,

thanks a lot :slight_smile:

You are setting

ors.endpoints.isochrones.maximum_range_time.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.maximum_range_time.0.value=8000

but also

ors.endpoints.isochrones.fastisochrones.maximum_range_time.0.profiles=driving-car, driving-hgv
ors.endpoints.isochrones.fastisochrones.maximum_range_time.0.value=10800

Thus, it might be the case that up to a time of 8000, openrouteservice is still calculating regular isochrones, which will take some time.

Apart from that, what do you mean by “take a long time to compute” for a 2 hour isochrone?

Could you enable DEBUG-output via

logging.level.org.heigit=DEBUG

and show the output of docker compose logs -f for your container?
When requesting isochrones, you should see lines similar to

ors-app  | 2024-08-22 15:09:38 DEBUG        http-nio-8082-exec-4 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Build shell concave hull 0.02184736

showing that fastisochrones are being calculated.

Best regards

Hi Jakob,

Indeed when I see the logs with the debug level I see what you mention (I will paste the logs at the en of the message). I had suspected something like that and I had tried to trigger the fastisochrones this way but it was before I added the config lines under the car profile as suggested by amandus. By the way the Map builder is FastIsochrone even if the max time is within the limit set to “isochrones”.

I went back to my previous config (without the lines proposed by amandus), rebuilt the graph folder and I performed the request again. It then uses ConcaveBallsIsochroneMapBuilder as expected. So now I know how to trigger the FastIsochroneMapBuilder, thank you! However, what now puzzles me is that for exactly the same point and max_time, FastIsochrone takes longer - hence the reason I thought it was still not working after the suggestion by amandus. In my machine the 2 hours isochrone with half hour intervals took a bit over 40 seconds with FastIsochrone and about 33 seconds with the regular MapBuilder.

By “a long time” I mean that it would be unfeasible to do it for the total amount of points I have, some 20k, within a reasonable time and the budget at disposal :sweat_smile:. Also given that when I use the full France osm.pbf file the computation takes longer (can’t compare apples to apples since the French map is too big to instantiate ORS in my machine but in the VM a single point takes about 2.5/3 minutes).

Also, I am not really interested in super precise isochrones. Is there any config setup that could help speed things up, sacrificing the precision of the isochrone?

As promised here are the logs with debug level. For the FastIsochroneMapBuilder:

ors-app  | #################
ors-app  | # Container ENV #
ors-app  | #################
ors-app  | ✓ CONTAINER_LOG_LEVEL: INFO. Set CONTAINER_LOG_LEVEL=DEBUG for more details.
ors-app  | ⓘ Any config file settings can be overwritten by environment variables.
ors-app  | ⓘ Use 'CONTAINER_LOG_LEVEL=DEBUG' to see the full list of active environment variables for this container.
ors-app  | ###########################
ors-app  | # Container sanity checks #
ors-app  | ###########################
ors-app  | ⓘ Running container as user root with id 0 and group 0
ors-app  | ✓ ORS_HOME: /home/ors exists and is writable.
ors-app  | ✓ The file /home/ors/config/example-ors-config.env is up to date
ors-app  | ✓ The file /home/ors/config/example-ors-config.yml is up to date
ors-app  | ✓ Using the existing ors-config.yml from: /home/ors/config/ors-config.yml
ors-app  | ⓘ Default to graphs folder: /home/ors/graphs
ors-app  | ⓘ Any ENV variables will have precedence over configuration variables from config files.
ors-app  | ✓ All checks passed. For details set CONTAINER_LOG_LEVEL=DEBUG.
ors-app  | #####################################
ors-app  | # Container file system preparation #
ors-app  | #####################################
ors-app  | ✓ The file /home/ors/files/example-heidelberg.osm.gz is up to date
ors-app  | ✓ Container file system preparation complete. For details set CONTAINER_LOG_LEVEL=DEBUG.
ors-app  | #######################################
ors-app  | # Prepare CATALINA_OPTS and JAVA_OPTS #
ors-app  | #######################################
ors-app  | ✓ CATALINA_OPTS and JAVA_OPTS ready. For details set CONTAINER_LOG_LEVEL=DEBUG.
ors-app  | #####################
ors-app  | # ORS startup phase #
ors-app  | #####################
ors-app  | ✓ 🙭 Ready to start the ORS application 🙭
ors-app  |
ors-app  |   .   ____          _            __ _ _
ors-app  |  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
ors-app  | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
ors-app  |  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
ors-app  |   '  |____| .__|_| |_|_| |_\__, | / / / /
ors-app  |  =========|_|==============|___/=/_/_/_/
ors-app  |  :: Spring Boot ::                (v3.1.6)
ors-app  |
ors-app  | 2024-08-22 15:42:28 INFO                                                  main [ o.h.o.a.Application                      ]   Starting Application v8.0.0 using Java 21.0.2 with PID 1 (/ors.jar started by root in /home/ors)
ors-app  | 2024-08-22 15:42:28 DEBUG                                                 main [ o.h.o.a.Application                      ]   Running with Spring Boot v3.1.6, Spring v6.0.14
ors-app  | 2024-08-22 15:42:28 INFO                                                  main [ o.h.o.a.Application                      ]   The following 1 profile is active: "default"
ors-app  | 2024-08-22 15:42:28 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]
ors-app  | 2024-08-22 15:42:28 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]   Configuration lookup started.
ors-app  | 2024-08-22 15:42:28 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]   Configuration file set by environment variable.
ors-app  | 2024-08-22 15:42:28 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]   Loaded file '/home/ors/config/ors-config.yml'
ors-app  | 2024-08-22 15:42:28 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]   Configuration lookup finished.
ors-app  | 2024-08-22 15:42:28 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]
ors-app  | 2024-08-22 15:42:30 INFO                                              ORS-Init [ o.h.o.a.s.l.ORSInitContextListener       ]   Initializing ORS...
ors-app  | 2024-08-22 15:42:30 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   Total - 1024 MB, Free - 967.92 MB, Max: 2 GB, Used - 56.08 MB
ors-app  | 2024-08-22 15:42:30 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ====> Initializing profiles from '/home/ors/files/merge_of_4.osm.pbf' (1 threads) ...
ors-app  | 2024-08-22 15:42:30 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   1 profile configurations submitted as tasks.
ors-app  | 2024-08-22 15:42:30 INFO                                            ORS-pl-car [ o.h.o.r.RoutingProfile                   ]   [1] Profiles: 'driving-car', location: '/home/ors/./graphs/car'.
ors-app  | 2024-08-22 15:42:30 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLMPreparationHandler   ]   Loaded landmark splitting collection from
ors-app  | 2024-08-22 15:42:31 INFO                                                  main [ o.h.o.a.Application                      ]   Started Application in 4.211 seconds (process running for 5.042)
ors-app  | 2024-08-22 15:42:31 INFO                                                  main [ o.h.o.a.Application                      ]   openrouteservice {"build_date":"2024-03-21T14:04:52Z","version":"8.0.0"}
ors-app  | 2024-08-22 15:42:34 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CorePreparationHandler     ]   Creating CH preparations, totalMB:1120, usedMB:838
ors-app  | 2024-08-22 15:42:34 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLMPreparationHandler   ]   Creating LM preparations, totalMB:1120, usedMB:842
ors-app  | 2024-08-22 15:42:34 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLandmarkStorage        ]   Created core node ID map for car_ors_fastest_with_turn_costs_highways of size 67166
ors-app  | 2024-08-22 15:42:34 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLandmarkStorage        ]   Created core node ID map for car_ors_fastest_with_turn_costs_allow_all of size 67166
ors-app  | 2024-08-22 15:42:34 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLandmarkStorage        ]   Created core node ID map for car_ors_shortest_with_turn_costs_highways of size 67166
ors-app  | 2024-08-22 15:42:34 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLandmarkStorage        ]   Created core node ID map for car_ors_shortest_with_turn_costs_allow_all of size 67166
ors-app  | 2024-08-22 15:42:35 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLMPreparationHandler   ]   Finished LM preparation, totalMB:1120, usedMB:1010
ors-app  | 2024-08-22 15:42:37 INFO                                            ORS-pl-car [ o.h.o.r.g.e.ORSGraphHopper               ]   version v4.9.1|2024-01-17T09:08:46Z (7,20,5,4,5,7)
ors-app  | 2024-08-22 15:42:37 INFO                                            ORS-pl-car [ o.h.o.r.g.e.ORSGraphHopper               ]   graph CH|car_ors|RAM_STORE|2D|turn_cost|7,20,5,4,5, details:edges:2 162 642(75MB), nodes:1 727 214(27MB), name:(12MB), geo:8 713 651(34MB), bounds:-1.0950703,4.3645409,46.3283356,50.8111942, shortcuts:1 629 279 (32MB), nodesCH:1 727 214 (14MB), shortcuts:2 034 914 (63MB), nodesCH:1 727 214 (14MB), shortcuts:2 489 126 (76MB), nodesCH:1 727 214 (14MB)
ors-app  | 2024-08-22 15:42:37 INFO                                            ORS-pl-car [ o.h.o.r.RoutingProfile                   ]   [1] Edges: 2162642 - Nodes: 1727214.
ors-app  | 2024-08-22 15:42:37 INFO                                            ORS-pl-car [ o.h.o.r.RoutingProfile                   ]   [1] Total time: 7.407s.
ors-app  | 2024-08-22 15:42:37 INFO                                            ORS-pl-car [ o.h.o.r.RoutingProfile                   ]   [1] Finished at: 2024-08-22 15:42:37.
ors-app  | 2024-08-22 15:42:37 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   Total time: 7.429s.
ors-app  | 2024-08-22 15:42:37 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ========================================================================
ors-app  | 2024-08-22 15:42:37 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ====> Recycling garbage...
ors-app  | 2024-08-22 15:42:37 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   Before: Total - 1.45 GB, Free - 73.38 MB, Max: 2 GB, Used - 1.38 GB
ors-app  | 2024-08-22 15:42:38 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   After: Total - 2 GB, Free - 644.19 MB, Max: 2 GB, Used - 1.37 GB
ors-app  | 2024-08-22 15:42:38 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ========================================================================
ors-app  | 2024-08-22 15:42:38 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ====> Memory usage by profiles:
ors-app  | 2024-08-22 15:42:38 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   [1] 485.03 MB (34.5%)
ors-app  | 2024-08-22 15:42:38 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   Total: 485.03 MB (34.5%)
ors-app  | 2024-08-22 15:42:38 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ========================================================================
ors-app  | 2024-08-22 15:42:54 DEBUG                                 http-nio-8082-exec-1 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Build shell concave hull 0.013804791
ors-app  | 2024-08-22 15:42:55 DEBUG                                 http-nio-8082-exec-1 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Poly of cell 21369 is invalid at size 0
ors-app  | 2024-08-22 15:42:57 DEBUG                                 http-nio-8082-exec-1 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Build shell concave hull 0.020219585
ors-app  | 2024-08-22 15:42:57 DEBUG                                 http-nio-8082-exec-1 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Poly of cell 21369 is invalid at size 0
ors-app  | 2024-08-22 15:43:00 DEBUG                                 http-nio-8082-exec-1 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Build shell concave hull 0.14104329
ors-app  | 2024-08-22 15:43:00 DEBUG                                 http-nio-8082-exec-1 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Poly of cell 21369 is invalid at size 0
ors-app  | 2024-08-22 15:43:00 DEBUG                                 http-nio-8082-exec-1 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Poly of cell 7585 is invalid at size 0
ors-app  | 2024-08-22 15:43:36 DEBUG                                 http-nio-8082-exec-1 [ o.h.o.i.b.f.FastIsochroneMapBuilder      ]   Build shell concave hull 0.15792237

And for the ConcaveBallsIsochroneMapBuilder:

ors-app  | #################
ors-app  | # Container ENV #
ors-app  | #################
ors-app  | ✓ CONTAINER_LOG_LEVEL: INFO. Set CONTAINER_LOG_LEVEL=DEBUG for more details.
ors-app  | ⓘ Any config file settings can be overwritten by environment variables.
ors-app  | ⓘ Use 'CONTAINER_LOG_LEVEL=DEBUG' to see the full list of active environment variables for this container.
ors-app  | ###########################
ors-app  | # Container sanity checks #
ors-app  | ###########################
ors-app  | ⓘ Running container as user root with id 0 and group 0
ors-app  | ✓ ORS_HOME: /home/ors exists and is writable.
ors-app  | ✓ The file /home/ors/config/example-ors-config.env is up to date
ors-app  | ✓ The file /home/ors/config/example-ors-config.yml is up to date
ors-app  | ✓ Using the existing ors-config.yml from: /home/ors/config/ors-config.yml
ors-app  | ⓘ Default to graphs folder: /home/ors/graphs
ors-app  | ⓘ Any ENV variables will have precedence over configuration variables from config files.
ors-app  | ✓ All checks passed. For details set CONTAINER_LOG_LEVEL=DEBUG.
ors-app  | #####################################
ors-app  | # Container file system preparation #
ors-app  | #####################################
ors-app  | ✓ The file /home/ors/files/example-heidelberg.osm.gz is up to date
ors-app  | ✓ Container file system preparation complete. For details set CONTAINER_LOG_LEVEL=DEBUG.
ors-app  | #######################################
ors-app  | # Prepare CATALINA_OPTS and JAVA_OPTS #
ors-app  | #######################################
ors-app  | ✓ CATALINA_OPTS and JAVA_OPTS ready. For details set CONTAINER_LOG_LEVEL=DEBUG.
ors-app  | #####################
ors-app  | # ORS startup phase #
ors-app  | #####################
ors-app  | ✓ 🙭 Ready to start the ORS application 🙭
ors-app  |
ors-app  |   .   ____          _            __ _ _
ors-app  |  /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
ors-app  | ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
ors-app  |  \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
ors-app  |   '  |____| .__|_| |_|_| |_\__, | / / / /
ors-app  |  =========|_|==============|___/=/_/_/_/
ors-app  |  :: Spring Boot ::                (v3.1.6)
ors-app  |
ors-app  | 2024-08-22 15:57:49 INFO                                                  main [ o.h.o.a.Application                      ]   Starting Application v8.0.0 using Java 21.0.2 with PID 1 (/ors.jar started by root in /home/ors)
ors-app  | 2024-08-22 15:57:49 DEBUG                                                 main [ o.h.o.a.Application                      ]   Running with Spring Boot v3.1.6, Spring v6.0.14
ors-app  | 2024-08-22 15:57:49 INFO                                                  main [ o.h.o.a.Application                      ]   The following 1 profile is active: "default"
ors-app  | 2024-08-22 15:57:49 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]
ors-app  | 2024-08-22 15:57:49 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]   Configuration lookup started.
ors-app  | 2024-08-22 15:57:49 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]   Configuration file set by environment variable.
ors-app  | 2024-08-22 15:57:49 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]   Loaded file '/home/ors/config/ors-config.yml'
ors-app  | 2024-08-22 15:57:49 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]   Configuration lookup finished.
ors-app  | 2024-08-22 15:57:49 INFO                                                  main [ o.h.o.a.ORSEnvironmentPostProcessor      ]
ors-app  | 2024-08-22 15:57:51 INFO                                              ORS-Init [ o.h.o.a.s.l.ORSInitContextListener       ]   Initializing ORS...
ors-app  | 2024-08-22 15:57:51 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   Total - 1024 MB, Free - 965.94 MB, Max: 2 GB, Used - 58.06 MB
ors-app  | 2024-08-22 15:57:51 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ====> Initializing profiles from '/home/ors/files/merge_of_4.osm.pbf' (1 threads) ...
ors-app  | 2024-08-22 15:57:51 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   1 profile configurations submitted as tasks.
ors-app  | 2024-08-22 15:57:51 INFO                                            ORS-pl-car [ o.h.o.r.RoutingProfile                   ]   [1] Profiles: 'driving-car', location: '/home/ors/./graphs/car'.
ors-app  | 2024-08-22 15:57:51 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLMPreparationHandler   ]   Loaded landmark splitting collection from
ors-app  | 2024-08-22 15:57:52 INFO                                                  main [ o.h.o.a.Application                      ]   Started Application in 3.076 seconds (process running for 3.791)
ors-app  | 2024-08-22 15:57:52 INFO                                                  main [ o.h.o.a.Application                      ]   openrouteservice {"build_date":"2024-03-21T14:04:52Z","version":"8.0.0"}
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CorePreparationHandler     ]   Creating CH preparations, totalMB:1171, usedMB:879
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLMPreparationHandler   ]   Creating LM preparations, totalMB:1171, usedMB:883
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLandmarkStorage        ]   Created core node ID map for car_ors_fastest_with_turn_costs_highways of size 67166
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLandmarkStorage        ]   Created core node ID map for car_ors_fastest_with_turn_costs_allow_all of size 67166
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLandmarkStorage        ]   Created core node ID map for car_ors_shortest_with_turn_costs_highways of size 67166
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLandmarkStorage        ]   Created core node ID map for car_ors_shortest_with_turn_costs_allow_all of size 67166
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.c.CoreLMPreparationHandler   ]   Finished LM preparation, totalMB:1171, usedMB:1050
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.ORSGraphHopper               ]   version v4.9.1|2024-01-17T09:08:46Z (7,20,5,4,5,7)
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.g.e.ORSGraphHopper               ]   graph CH|car_ors|RAM_STORE|3D|turn_cost|7,20,5,4,5, details:edges:2 162 642(75MB), nodes:1 727 214(33MB), name:(12MB), geo:12 527 959(48MB), bounds:-1.0950703,4.3645409,46.3283356,50.8111942,-8.0,499.0, shortcuts:1 629 279 (32MB), nodesCH:1 727 214 (14MB), shortcuts:2 034 914 (63MB), nodesCH:1 727 214 (14MB), shortcuts:2 489 126 (76MB), nodesCH:1 727 214 (14MB)
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.RoutingProfile                   ]   [1] Edges: 2162642 - Nodes: 1727214.
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.RoutingProfile                   ]   [1] Total time: 2.643s.
ors-app  | 2024-08-22 15:57:53 INFO                                            ORS-pl-car [ o.h.o.r.RoutingProfile                   ]   [1] Finished at: 2024-08-22 15:57:53.
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   Total time: 2.658s.
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ========================================================================
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ====> Recycling garbage...
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   Before: Total - 1.14 GB, Free - 118.35 MB, Max: 2 GB, Used - 1.03 GB
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   After: Total - 1.69 GB, Free - 692.46 MB, Max: 2 GB, Used - 1.01 GB
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ========================================================================
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ====> Memory usage by profiles:
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   [1] 486.03 MB (46.8%)
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   Total: 486.03 MB (46.8%)
ors-app  | 2024-08-22 15:57:53 INFO                                              ORS-Init [ o.h.o.r.RoutingProfileManager            ]   ========================================================================
ors-app  | 2024-08-22 15:58:27 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Find edges: 1.0938871
ors-app  | 2024-08-22 15:58:27 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Mark dead ends: 0.27480513
ors-app  | 2024-08-22 15:58:27 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Expanding edges 0.04229756
ors-app  | 2024-08-22 15:58:27 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   0 Find points: 0.44337445 77276
ors-app  | 2024-08-22 15:58:28 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Build shell concave hull 0.4638892
ors-app  | 2024-08-22 15:58:28 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Build concave hull total: 0.4651841
ors-app  | 2024-08-22 15:58:29 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Expanding edges 0.1203571
ors-app  | 2024-08-22 15:58:29 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   1 Find points: 0.6364918 491805
ors-app  | 2024-08-22 15:58:34 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Build shell concave hull 5.231053
ors-app  | 2024-08-22 15:58:34 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Build concave hull total: 5.235059
ors-app  | 2024-08-22 15:58:34 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Expanding edges 0.07474517
ors-app  | 2024-08-22 15:58:34 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   2 Find points: 0.36078084 797094
ors-app  | 2024-08-22 15:58:44 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Build shell concave hull 10.097713
ors-app  | 2024-08-22 15:58:44 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Build concave hull total: 10.104525
ors-app  | 2024-08-22 15:58:45 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Expanding edges 0.18962508
ors-app  | 2024-08-22 15:58:45 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   3 Find points: 0.4510705 978533
ors-app  | 2024-08-22 15:58:59 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Build shell concave hull 13.848561
ors-app  | 2024-08-22 15:58:59 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Build concave hull total: 13.857379
ors-app  | 2024-08-22 15:58:59 DEBUG                                 http-nio-8082-exec-1 [ .o.i.b.c.ConcaveBallsIsochroneMapBuilder ]   Total time: 32.946896

Thanks again for your help!

Hey,

great to see that apparently fastisochrones are being used!
Sad, however, that they don’t seem to be that fast after all :smiley:

We have a blog post that explains the idea behind fastisochrones.

They were developed to make large-scale isochrones possible at all - where large-scale means something beyond 6 hours, so basically country-size isochrones.
Thus, it might be that algorithmically, 2 hours are at the threshhold where classic isochrones become too large to be calculated fast, but fast-isochrones have too much of an overhead to provide a lot of value.

However, there is one configurable value, namely maxcellnodes, determining the partition size (i.e. the number of nodes in one partition).
You can definitely try playing around with it to see if that speeds up things.

If not, there might be something wrong with the implementation…

Best regards

Hi Jakob,

Thanks for the information!
Actually, I think I found a way to make it faster but I am not sure if it is something that is actually intended to happen. When using the regular map builder, setting a “smoothing” parameter in the request does not make it faster, it only smoothes out the returned polygone. However, when using FastIsochrone map builder it actually returns the response much faster. The elapsed time per point came down from 40s to about 8s with a smoothing factor of 45 in my computer. On the VM where I have the ORS instance for all of France it came down from over 3 minutes to a bit less than 30s. So now if I parallelize the computation across CPUs, I can easily reach about 7s per point!

Thanks again for all your help!

1 Like