Valhalla Route branches

52 views Asked by At

We are building a road traffic tracking system based on Valhalla, and we have a problem with road branches: enter image description here

JSON:

{"locations":[{"lat":53.88756,"lon":25.3195619,"type":"break"},{"lat":53.8876366,"lon":25.3196835,"type":"break"},{"lat":53.888291,"lon":25.3205159,"type":"break"},{"lat":53.8896125,"lon":25.2958685,"type":"break"},{"lat":53.8896125,"lon":25.2958685,"type":"break"},{"lat":53.8804924,"lon":25.2793523,"type":"break"},{"lat":53.8774732,"lon":25.2743507,"type":"break"},{"lat":53.8724133,"lon":25.2598487,"type":"break"},{"lat":53.8689721,"lon":25.2486853,"type":"break"},{"lat":53.8231981,"lon":25.1259827,"type":"break"},{"lat":53.7370888,"lon":24.9938559,"type":"break"}],"costing":"auto","language":"ru-RU","directions_options":{"units":"kilometers"}}

Config:

{
  "additional_data": {
    "elevation": "/custom_files/elevation_data"
  },
  "httpd": {
    "service": {
      "drain_seconds": 28,
      "interrupt": "ipc:///tmp/interrupt",
      "listen": "tcp://*:8002",
      "loopback": "ipc:///tmp/loopback",
      "shutdown_seconds": 1,
      "timeout_seconds": -1
    }
  },
  "loki": {
    "actions": [
      "locate",
      "route",
      "height",
      "sources_to_targets",
      "optimized_route",
      "isochrone",
      "trace_route",
      "trace_attributes",
      "transit_available",
      "expansion",
      "centroid",
      "status"
    ],
    "logging": {
      "color": true,
      "file_name": "path_to_some_file.log",
      "long_request": 100,
      "type": "std_out"
    },
    "service": {
      "proxy": "ipc:///tmp/loki"
    },
    "service_defaults": {
      "heading_tolerance": 60,
      "minimum_reachability": 50,
      "node_snap_tolerance": 5,
      "radius": 0,
      "search_cutoff": 170000,
      "street_side_max_distance": 1000,
      "street_side_tolerance": 3
    },
    "use_connectivity": true
  },
  "meili": {
    "auto": {
      "search_radius": 10,
      "turn_penalty_factor": 500
    },
    "bicycle": {
      "turn_penalty_factor": 140
    },
    "customizable": [
      "mode",
      "search_radius",
      "turn_penalty_factor",
      "gps_accuracy",
      "interpolation_distance",
      "sigma_z",
      "beta",
      "max_route_distance_factor",
      "max_route_time_factor"
    ],
    "default": {
      "beta": 3,
      "breakage_distance": 5000,
      "geometry": false,
      "gps_accuracy": 3,
      "interpolation_distance": 10,
      "max_route_distance_factor": 5,
      "max_route_time_factor": 5,
      "max_search_radius": 100,
      "route": true,
      "search_radius": 50,
      "sigma_z": 4.07,
      "turn_penalty_factor": 0
    },
    "grid": {
      "cache_size": 100240,
      "size": 500
    },
    "logging": {
      "color": true,
      "file_name": "path_to_some_file.log",
      "type": "std_out"
    },
    "mode": "auto",
    "multimodal": {
      "turn_penalty_factor": 70
    },
    "pedestrian": {
      "search_radius": 50,
      "turn_penalty_factor": 100
    },
    "service": {
      "proxy": "ipc:///tmp/meili"
    },
    "verbose": false
  },
  "mjolnir": {
    "admin": "/custom_files/admin_data/admins.sqlite",
    "concurrency": "4",
    "data_processing": {
      "allow_alt_name": false,
      "apply_country_overrides": true,
      "infer_internal_intersections": true,
      "infer_turn_channels": true,
      "scan_tar": false,
      "use_admin_db": true,
      "use_direction_on_ways": false,
      "use_rest_area": false,
      "use_urban_tag": false
    },
    "global_synchronized_cache": false,
    "hierarchy": true,
    "id_table_size": 1300000000,
    "import_bike_share_stations": false,
    "include_bicycle": true,
    "include_construction": false,
    "include_driveways": true,
    "include_driving": true,
    "include_pedestrian": true,
    "include_platforms": false,
    "landmarks": "/data/valhalla/landmarks.sqlite",
    "logging": {
      "color": true,
      "file_name": "path_to_some_file.log",
      "type": "std_out"
    },
    "lru_mem_cache_hard_control": false,
    "max_cache_size": 1000000000,
    "max_concurrent_reader_users": 1,
    "reclassify_links": true,
    "shortcuts": true,
    "tile_dir": "/custom_files/valhalla_tiles",
    "tile_extract": "/custom_files/valhalla_tiles.tar",
    "timezone": "/custom_files/timezone_data/timezones.sqlite",
    "traffic_extract": "/custom_files/traffic.tar",
    "transit_dir": "/custom_files/transit_tiles",
    "transit_feeds_dir": "/gtfs_feeds",
    "transit_pbf_limit": 20000,
    "use_lru_mem_cache": false,
    "use_simple_mem_cache": false
  },
  "odin": {
    "logging": {
      "color": true,
      "file_name": "path_to_some_file.log",
      "type": "std_out"
    },
    "markup_formatter": {
      "markup_enabled": false,
      "phoneme_format": "<TEXTUAL_STRING> (<span class=<QUOTES>phoneme<QUOTES>>/<VERBAL_STRING>/</span>)"
    },
    "service": {
      "proxy": "ipc:///tmp/odin"
    }
  },
  "service_limits": {
    "auto": {
      "max_distance": 50000000,
      "max_locations": 20000,
      "max_matrix_distance": 400000,
      "max_matrix_location_pairs": 2500
    },
    "bicycle": {
      "max_distance": 500000,
      "max_locations": 50,
      "max_matrix_distance": 200000,
      "max_matrix_location_pairs": 2500
    },
    "bikeshare": {
      "max_distance": 500000,
      "max_locations": 50,
      "max_matrix_distance": 200000,
      "max_matrix_location_pairs": 2500
    },
    "bus": {
      "max_distance": 5000000,
      "max_locations": 50,
      "max_matrix_distance": 400000,
      "max_matrix_location_pairs": 2500
    },
    "centroid": {
      "max_distance": 200000,
      "max_locations": 5
    },
    "isochrone": {
      "max_contours": 4,
      "max_distance": 25000,
      "max_distance_contour": 200,
      "max_locations": 1,
      "max_time_contour": 120
    },
    "max_alternates": 2,
    "max_distance_disable_hierarchy_culling": 0,
    "max_exclude_locations": 50,
    "max_exclude_polygons_length": 10000,
    "max_radius": 200,
    "max_reachability": 100,
    "max_timedep_distance": 500000,
    "max_timedep_distance_matrix": 0,
    "motor_scooter": {
      "max_distance": 500000,
      "max_locations": 50,
      "max_matrix_distance": 200000,
      "max_matrix_location_pairs": 2500
    },
    "motorcycle": {
      "max_distance": 500000,
      "max_locations": 50,
      "max_matrix_distance": 200000,
      "max_matrix_location_pairs": 2500
    },
    "multimodal": {
      "max_distance": 500000,
      "max_locations": 50,
      "max_matrix_distance": 0,
      "max_matrix_location_pairs": 0
    },
    "pedestrian": {
      "max_distance": 250000,
      "max_locations": 50,
      "max_matrix_distance": 200000,
      "max_matrix_location_pairs": 2500,
      "max_transit_walking_distance": 10000,
      "min_transit_walking_distance": 1
    },
    "skadi": {
      "max_shape": 750000,
      "min_resample": 10
    },
    "status": {
      "allow_verbose": false
    },
    "taxi": {
      "max_distance": 5000000,
      "max_locations": 20,
      "max_matrix_distance": 400000,
      "max_matrix_location_pairs": 2500
    },
    "trace": {
      "max_alternates": 3,
      "max_alternates_shape": 100,
      "max_distance": 200000,
      "max_gps_accuracy": 100,
      "max_search_radius": 100,
      "max_shape": 16000
    },
    "transit": {
      "max_distance": 500000,
      "max_locations": 50,
      "max_matrix_distance": 200000,
      "max_matrix_location_pairs": 2500
    },
    "truck": {
      "max_distance": 5000000,
      "max_locations": 20,
      "max_matrix_distance": 400000,
      "max_matrix_location_pairs": 2500
    }
  },
  "statsd": {
    "port": 8125,
    "prefix": "valhalla"
  },
  "thor": {
    "clear_reserved_memory": false,
    "extended_search": false,
    "logging": {
      "color": true,
      "file_name": "path_to_some_file.log",
      "long_request": 110,
      "type": "std_out"
    },
    "max_reserved_labels_count_astar": 2000000,
    "max_reserved_labels_count_bidir_astar": 1000000,
    "max_reserved_labels_count_bidir_dijkstras": 2000000,
    "max_reserved_labels_count_dijkstras": 4000000,
    "service": {
      "proxy": "ipc:///tmp/thor"
    },
    "source_to_target_algorithm": "select_optimal"
  }
}

here are quite a lot of such road branches, which is poorly estimated when calculating the distance. How to solve this problem?

Try changing server settings.

0

There are 0 answers