{
 "ocl_version": "0.1.0",
 "name": "Route d'Odonne",
 "slug": "route-d-odonne-2",
 "confidence": "B",
 "reported_claims": [],
 "ladder": [
  {
   "window_m": 2.0,
   "max_gradient_pct": 37.996865207810515,
   "diagnostic": true,
   "flags": [
    "texture_excluded"
   ],
   "start_distance_m": 219.0,
   "end_distance_m": 221.0,
   "start_elevation_m": 1445.1658858682329,
   "end_elevation_m": 1445.925823172389,
   "min_gradient_pct": -20.744536691915982,
   "suppressed_max_gradient_pct": 38.96682140059511,
   "suppressed_location_m": [
    168.0,
    170.0
   ]
  },
  {
   "window_m": 3.0,
   "max_gradient_pct": 27.78589881223373,
   "diagnostic": true,
   "flags": [
    "texture_excluded",
    "texture_excluded"
   ],
   "start_distance_m": 218.0,
   "end_distance_m": 221.0,
   "start_elevation_m": 1445.092246208022,
   "end_elevation_m": 1445.925823172389,
   "min_gradient_pct": -11.706754995930169,
   "suppressed_max_gradient_pct": 35.66928058906645,
   "suppressed_location_m": [
    167.0,
    170.0
   ]
  },
  {
   "window_m": 5.0,
   "max_gradient_pct": 24.330989963491447,
   "diagnostic": false,
   "flags": [
    "texture_excluded",
    "texture_excluded"
   ],
   "start_distance_m": 104.0,
   "end_distance_m": 109.0,
   "start_elevation_m": 1429.940520520059,
   "end_elevation_m": 1431.1570700182335,
   "min_gradient_pct": -5.605231120271128,
   "suppressed_max_gradient_pct": 29.35384690104911,
   "suppressed_location_m": [
    165.0,
    170.0
   ]
  },
  {
   "window_m": 10.0,
   "max_gradient_pct": 19.555174633367187,
   "diagnostic": false,
   "flags": [
    "texture_excluded",
    "texture_excluded"
   ],
   "start_distance_m": 741.0,
   "end_distance_m": 751.0,
   "start_elevation_m": 1491.9794952103935,
   "end_elevation_m": 1493.9350126737302,
   "min_gradient_pct": -1.8702136470756159,
   "suppressed_max_gradient_pct": 22.96057670529308,
   "suppressed_location_m": [
    152.0,
    162.0
   ]
  },
  {
   "window_m": 20.0,
   "max_gradient_pct": 17.05602505152683,
   "diagnostic": false,
   "flags": [
    "texture_excluded",
    "texture_excluded"
   ],
   "start_distance_m": 91.0,
   "end_distance_m": 111.0,
   "start_elevation_m": 1427.9784455679314,
   "end_elevation_m": 1431.3896505782368,
   "min_gradient_pct": -1.3395968346651443,
   "suppressed_max_gradient_pct": 22.63022362768197,
   "suppressed_location_m": [
    150.0,
    170.0
   ]
  },
  {
   "window_m": 25.0,
   "max_gradient_pct": 16.48053613503089,
   "diagnostic": false,
   "flags": [
    "texture_excluded",
    "texture_excluded"
   ],
   "start_distance_m": 84.0,
   "end_distance_m": 109.0,
   "start_elevation_m": 1427.0369359844758,
   "end_elevation_m": 1431.1570700182335,
   "min_gradient_pct": -0.8399105759754093,
   "suppressed_max_gradient_pct": 21.268864886998927,
   "suppressed_location_m": [
    145.0,
    170.0
   ]
  },
  {
   "window_m": 50.0,
   "max_gradient_pct": 14.521474247664628,
   "diagnostic": false,
   "flags": [
    "texture_excluded"
   ],
   "start_distance_m": 70.0,
   "end_distance_m": 120.0,
   "start_elevation_m": 1425.0415343861546,
   "end_elevation_m": 1432.302271509987,
   "min_gradient_pct": 1.157252416839583,
   "suppressed_max_gradient_pct": 16.977112825937184,
   "suppressed_location_m": [
    120.0,
    170.0
   ]
  },
  {
   "window_m": 100.0,
   "max_gradient_pct": 13.517860728680034,
   "diagnostic": false,
   "flags": [
    "texture_excluded"
   ],
   "start_distance_m": 1483.0,
   "end_distance_m": 1583.0,
   "start_elevation_m": 1580.68463346708,
   "end_elevation_m": 1594.20249419576,
   "min_gradient_pct": 3.7694823566343985,
   "suppressed_max_gradient_pct": 15.749293536800906,
   "suppressed_location_m": [
    70.0,
    170.0
   ]
  }
 ],
 "shape": {
  "ascent_concentration": 0.282,
  "concentration_window_frac": 0.25,
  "longest_pitch_10pct_m": 215.0,
  "shape_class": "sustained"
 },
 "length_m": 1716.3159166535065,
 "start_elevation_m": 1416.6575302148772,
 "end_elevation_m": 1600.2361808227492,
 "endpoint_gain_m": 183.57865060787208,
 "overall_gradient_pct": 10.696087405972202,
 "accumulated_ascent_m": 186.9111395527848,
 "window_maxima": {
  "max_5m": {
   "gradient_pct": 24.330989963491447,
   "start_distance_m": 104.0,
   "end_distance_m": 109.0,
   "midpoint_distance_m": 106.5,
   "start_elevation_m": 1429.940520520059,
   "end_elevation_m": 1431.1570700182335,
   "start_xy": [
    2578440.9275079533,
    1116937.106694155
   ],
   "end_xy": [
    2578436.2032902725,
    1116938.6497272558
   ]
  },
  "max_10m": {
   "gradient_pct": 19.555174633367187,
   "start_distance_m": 741.0,
   "end_distance_m": 751.0,
   "midpoint_distance_m": 746.0,
   "start_elevation_m": 1491.9794952103935,
   "end_elevation_m": 1493.9350126737302,
   "start_xy": [
    2578049.1107992283,
    1117059.945288699
   ],
   "end_xy": [
    2578043.4351001424,
    1117051.8253641555
   ]
  },
  "max_20m": {
   "gradient_pct": 17.05602505152683,
   "start_distance_m": 91.0,
   "end_distance_m": 111.0,
   "midpoint_distance_m": 101.0,
   "start_elevation_m": 1427.9784455679314,
   "end_elevation_m": 1431.3896505782368,
   "start_xy": [
    2578450.7218251545,
    1116928.5586432999
   ],
   "end_xy": [
    2578434.2717623115,
    1116939.1685709744
   ]
  },
  "max_25m": {
   "gradient_pct": 16.48053613503089,
   "start_distance_m": 84.0,
   "end_distance_m": 109.0,
   "midpoint_distance_m": 96.5,
   "start_elevation_m": 1427.0369359844758,
   "end_elevation_m": 1431.1570700182335,
   "start_xy": [
    2578455.360498023,
    1116923.335833644
   ],
   "end_xy": [
    2578436.2032902725,
    1116938.6497272558
   ]
  },
  "max_50m": {
   "gradient_pct": 14.521474247664628,
   "start_distance_m": 70.0,
   "end_distance_m": 120.0,
   "midpoint_distance_m": 95.0,
   "start_elevation_m": 1425.0415343861546,
   "end_elevation_m": 1432.302271509987,
   "start_xy": [
    2578464.2318704952,
    1116912.5053811006
   ],
   "end_xy": [
    2578425.374416361,
    1116939.095184827
   ]
  },
  "max_100m": {
   "gradient_pct": 13.517860728680034,
   "start_distance_m": 1483.0,
   "end_distance_m": 1583.0,
   "midpoint_distance_m": 1533.0,
   "start_elevation_m": 1580.68463346708,
   "end_elevation_m": 1594.20249419576,
   "start_xy": [
    2578375.699333594,
    1116563.123157555
   ],
   "end_xy": [
    2578344.6407118943,
    1116496.2209769737
   ]
  }
 },
 "window_minima": {
  "min_5m": {
   "gradient_pct": -5.605231120271128,
   "start_distance_m": 1368.0,
   "end_distance_m": 1373.0,
   "midpoint_distance_m": 1370.5,
   "start_elevation_m": 1567.4925365099075,
   "end_elevation_m": 1567.212274953894,
   "start_xy": [
    2578307.9989320277,
    1116653.89489539
   ],
   "end_xy": [
    2578311.88191717,
    1116650.7449074525
   ]
  },
  "min_10m": {
   "gradient_pct": -1.8702136470756159,
   "start_distance_m": 1611.0,
   "end_distance_m": 1621.0,
   "midpoint_distance_m": 1616.0,
   "start_elevation_m": 1595.6626572777645,
   "end_elevation_m": 1595.475635913057,
   "start_xy": [
    2578318.3936499828,
    1116498.1133868974
   ],
   "end_xy": [
    2578311.345661351,
    1116505.1746939756
   ]
  },
  "min_20m": {
   "gradient_pct": -1.3395968346651443,
   "start_distance_m": 1606.0,
   "end_distance_m": 1626.0,
   "midpoint_distance_m": 1616.0,
   "start_elevation_m": 1595.714287121332,
   "end_elevation_m": 1595.446367754399,
   "start_xy": [
    2578322.665354432,
    1116495.5148546144
   ],
   "end_xy": [
    2578307.892548195,
    1116508.7907693994
   ]
  },
  "min_25m": {
   "gradient_pct": -0.8399105759754093,
   "start_distance_m": 1606.0,
   "end_distance_m": 1631.0,
   "midpoint_distance_m": 1618.5,
   "start_elevation_m": 1595.714287121332,
   "end_elevation_m": 1595.5043094773382,
   "start_xy": [
    2578322.665354432,
    1116495.5148546144
   ],
   "end_xy": [
    2578304.4384553405,
    1116512.4059098389
   ]
  },
  "min_50m": {
   "gradient_pct": 1.157252416839583,
   "start_distance_m": 1604.0,
   "end_distance_m": 1654.0,
   "midpoint_distance_m": 1629.0,
   "start_elevation_m": 1595.6760456937473,
   "end_elevation_m": 1596.254671902167,
   "start_xy": [
    2578324.3743112623,
    1116494.47588087
   ],
   "end_xy": [
    2578286.687492809,
    1116526.9976174622
   ]
  },
  "min_100m": {
   "gradient_pct": 3.7694823566343985,
   "start_distance_m": 1602.0,
   "end_distance_m": 1702.0,
   "midpoint_distance_m": 1652.0,
   "start_elevation_m": 1595.6073911985445,
   "end_elevation_m": 1599.376873555179,
   "start_xy": [
    2578326.1576094804,
    1116493.5872727663
   ],
   "end_xy": [
    2578254.7473596935,
    1116560.5067849485
   ]
  }
 },
 "diagnostic_window_maxima": {
  "max_2m": {
   "gradient_pct": 37.996865207810515,
   "start_distance_m": 219.0,
   "end_distance_m": 221.0,
   "midpoint_distance_m": 220.0,
   "start_elevation_m": 1445.1658858682329,
   "end_elevation_m": 1445.925823172389,
   "start_xy": [
    2578330.2516150684,
    1116956.728949676
   ],
   "end_xy": [
    2578328.466788452,
    1116957.6282217843
   ]
  },
  "max_3m": {
   "gradient_pct": 27.78589881223373,
   "start_distance_m": 218.0,
   "end_distance_m": 221.0,
   "midpoint_distance_m": 219.5,
   "start_elevation_m": 1445.092246208022,
   "end_elevation_m": 1445.925823172389,
   "start_xy": [
    2578331.147262697,
    1116956.2841853793
   ],
   "end_xy": [
    2578328.466788452,
    1116957.6282217843
   ]
  }
 },
 "diagnostic_note": "Windows <=3 m are at raster-noise scale (1-sigma raster noise alone is roughly +/-7 pp at 2 m and +/-5 pp at 3 m on a 1 m DTM). Diagnostic use only: never a headline or ranking value.",
 "quality_summary": {
  "texture_suppression": {
   "masked_fraction": 0.035,
   "windows_resited": [
    3.0,
    5.0,
    10.0,
    20.0,
    25.0
   ],
   "windows_unresolved": []
  },
  "texture_windows": {
   "rounds": 2,
   "windows_masked": [
    {
     "window_m": 25.0,
     "start_m": 145.0,
     "end_m": 170.0,
     "raw_pct": 21.27,
     "reason": "hump"
    },
    {
     "window_m": 20.0,
     "start_m": 150.0,
     "end_m": 170.0,
     "raw_pct": 22.63,
     "reason": "hump"
    },
    {
     "window_m": 25.0,
     "start_m": 1336.0,
     "end_m": 1361.0,
     "raw_pct": 16.57,
     "reason": "hump"
    },
    {
     "window_m": 20.0,
     "start_m": 1341.0,
     "end_m": 1361.0,
     "raw_pct": 17.81,
     "reason": "hump"
    },
    {
     "window_m": 10.0,
     "start_m": 1351.0,
     "end_m": 1361.0,
     "raw_pct": 22.66,
     "reason": "hump"
    }
   ],
   "advisory": [],
   "unresolved": []
  },
  "excluded_ranges_m": [
   [
    143.0,
    172.0
   ],
   [
    1334.0,
    1363.0
   ]
  ],
  "review": [],
  "extent": [
   "may_start_earlier"
  ]
 },
 "provenance": {
  "analysis_version": "0.1.0",
  "sample_interval_m": 1.0,
  "interpolation": "bilinear",
  "smoothing": "none",
  "gradient_windows_m": [
   5.0,
   10.0,
   20.0,
   25.0,
   50.0,
   100.0
  ],
  "diagnostic_windows_m": [
   2.0,
   3.0
  ],
  "elevation_crs": "EPSG:2056",
  "elevation_resolution_m": 0.5,
  "elevation_tiles": [
   "data/cache/ch/swissalti3d_2024_2577-1116_0.5_2056_5728.tif",
   "data/cache/ch/swissalti3d_2024_2577-1117_0.5_2056_5728.tif",
   "data/cache/ch/swissalti3d_2024_2578-1116_0.5_2056_5728.tif",
   "data/cache/ch/swissalti3d_2024_2578-1117_0.5_2056_5728.tif"
  ],
  "calculated_at": "2026-09-11T23:49:27+00:00",
  "road_source": "OpenStreetMap (local PBF extract)",
  "road_attribution": "\u00a9 OpenStreetMap contributors, ODbL",
  "osm_pbf_path": "output/texture-ch-ch/batch-switzerland-rchunk01.pbf",
  "osm_snapshot": "",
  "run_id": "texture-ch-ch-260911",
  "elevation_provider": "swisstopo swissALTI3D",
  "elevation_licence": "swisstopo open government data (OGD): free use, attribution '\u00a9 swisstopo' \u2014 https://www.swisstopo.admin.ch/en/terms-and-conditions",
  "elevation_dataset": "swissALTI3D 0.5 m DTM (Federal Office of Topography swisstopo)",
  "elevation_tile_ids": [
   "2577-1116",
   "2577-1117",
   "2578-1116",
   "2578-1117"
  ],
  "climb_origin": "discovered",
  "canopy_check": "unavailable \u2014 no surface model (DSM or point cloud) registered for this coverage",
  "license": "ODbL-1.0",
  "license_url": "https://howsteep.org/licensing"
 },
 "area": {
  "place": "Leytron",
  "county": "Valais/Wallis",
  "source": "OpenStreetMap administrative boundaries (\u00a9 OpenStreetMap contributors, ODbL)"
 }
}