LIVING SURVEY — measurements are reviewed continuously as new data and local evidence arrive. Seen a sign, a gate, or a better name? Submit an update no account needed · photos welcome via GitHub

← all climbs

Øykhagen

515.8 m · net rise 39.6 m · total ascent 40.2 m · overall 7.7% · evidence quality B (good) · Sandnes · Rogaland

Shape: sustained — 41% of the climbing sits in a quarter of the distance; longest continuous stretch at 10%+ is 66 m.

Found purely from mapping and LiDAR data, and not yet matched against books, race records or lists — it may be well known to locals under a name we've never heard. It was cross-checked against the NVDB road network, OpenStreetMap and a second terrain model, but a discovery can still be an artifact of the terrain model or the map. Treat it as a well-evidenced hypothesis until someone has ridden it. If you know this road, tell us what you found — photographs, corrections and local knowledge all welcome; the map links below let you scout it first.

≈ Overhead cover (tree canopy or structures) spans 20% of this route — detected by comparing the surface model (DSM, treetops and rooftops) against the terrain model (DTM, bare ground). Under cover the bare-ground model is built from fewer laser returns, so metre-scale readings can wobble; maxima whose window sits in a covered zone are marked ≈ below — less certain — the flag does not say whether the true value is higher or lower. Longer windows average over more clean ground and are steadier.

Gradient ladder what do windows mean?

WindowMaximumLocated at
2 m (diagnostic)≈25%389–391 munder overhead cover
3 m (diagnostic)≈23%389–392 munder overhead cover
5 m≈21%363–368 munder overhead cover
10 m≈21%358–368 munder overhead cover
20 m≈20.6%352–372 munder overhead cover
25 m≈20.5%347–372 munder overhead cover
50 m≈19.4%345–395 munder overhead cover
100 m≈13.6%295–395 munder overhead cover

may continue beyond end Extent detection suggests reviewing where this climb starts/ends.

Map

Check this route yourself: Google Maps route via their router · Street View at the base where coverage exists · geojson.io our exact measured line · OpenTopoMap

This climb's data: OCL JSON — the full gradient ladder, quality flags and provenance in the OpenClimb Ladder format.

Surface: unpaved throughout, according to NVDB, Norway's National Road Database.

Measured, not vetted. This page records what the laser record shows about the road's shape — nothing more. Nobody has necessarily ridden or inspected this road for the survey, and a page here is not a recommendation and no guarantee that the road is open, surfaced, rideable or safe. Gates, private sections, missing rights of way and hazards do not show up in elevation data. Check access and conditions on the ground and make your own judgment.

Ridden it, or know better? Submit data for this climb no account needed ·

Route colour = gradient over a 25 m window: <10% 10–20% 20–25% ≥25%

Route line = the road surface as the LiDAR survey finds it. Basemap roads are for orientation and may sit a few metres off.

  © OpenStreetMap contributors · topo tiles © OpenTopoMap (CC-BY-SA) · vector tiles OpenFreeMap

Øykhagen LiDAR hillshade map with contours

Profile

The map, profile and gradient chart share one position — move your pointer over them and the marker follows. Colors are the gradient bands; the shaded span is the steepest 25 m. Any 25 m figure is good to about a point either way (why).

Øykhagen elevation profile
Øykhagen rolling gradient profile
 

Measurement card

ElevationKartverket NHM DTM 1 m (laser-covered ground only) — Nasjonal høydemodell (NHM) DTM, 1 m, EPSG:25833, NN2000 (Kartverket), served by the hoydedata.no ImageServer; ground without a laser project is a coarser resampled product and is never measured
Resolution / CRS1.0 m grid, EPSG:25833; sampled every 1.0 m, bilinear interpolation
TilesE-26000-N6567000, E-26000-N6567500, E-25500-N6567000, E-25500-N6567500
Road centrelineOpenStreetMap (local PBF extract)
Quality statusevidence quality B; caveated windows: canopy or structure
AnalysisOCL 0.1.0, analysis 0.1.0, run no-b01, calculated 2026-10-03

Provenance

{
  "analysis_version": "0.1.0",
  "run_manifest": {
    "manifest_version": "1",
    "code_git_sha": "368c60c29e47d4b421849c953b172a04f7694146",
    "code_git_dirty": "false",
    "analysis_version": "0.1.0",
    "analysis_config_digest": "sha256:8c94015b54267da4",
    "python": "3.14.4",
    "numpy": "2.5.3",
    "rasterio": "1.5.2",
    "pyproj": "3.8.0",
    "laspy": "2.7.0",
    "shapely": "2.1.2",
    "pyosmium": "4.3.1",
    "libosmium": "2.23.1",
    "gdal": "3.12.2",
    "proj": "9.8.1",
    "run_id": "no-b01",
    "road_pbf": "no-b01-block-batch-no-b01.osm.pbf",
    "region_key": "norway",
    "crs": "EPSG:25833",
    "elevation_provider_key": "nhm-no",
    "tile_index": "nhm-window",
    "authority": "nvdb",
    "registry_pbf": "norway-2026-10-01.osm.pbf"
  },
  "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
  ],
  "scale_correction": "point",
  "scale_correction_crs": "EPSG:25833",
  "elevation_crs": "EPSG:25833",
  "elevation_resolution_m": 1.0,
  "elevation_tiles": [
    "data/cache/no/nhm-no_dtm_E-26000-N6567000_1m.tif",
    "data/cache/no/nhm-no_dtm_E-26000-N6567500_1m.tif",
    "data/cache/no/nhm-no_dtm_E-25500-N6567000_1m.tif",
    "data/cache/no/nhm-no_dtm_E-25500-N6567500_1m.tif"
  ],
  "calculated_at": "2026-10-03T20:00:08+00:00",
  "road_source": "OpenStreetMap (local PBF extract)",
  "road_attribution": "\u00a9 OpenStreetMap contributors, ODbL",
  "osm_pbf_path": "data/cache/pbf/no-b01-block-batch-no-b01.osm.pbf",
  "osm_snapshot": "",
  "run_id": "no-b01",
  "elevation_provider": "Kartverket NHM DTM 1 m (laser-covered ground only)",
  "elevation_licence": "CC BY 4.0 \u2014 \u00a9 Kartverket (https://www.kartverket.no/api-og-data/vilkar-for-bruk)",
  "elevation_dataset": "Nasjonal h\u00f8ydemodell (NHM) DTM, 1 m, EPSG:25833, NN2000 (Kartverket), served by the hoydedata.no ImageServer; ground without a laser project is a coarser resampled product and is never measured",
  "elevation_vertical_datum": "NN2000",
  "elevation_tile_ids": [
    "E-26000-N6567000",
    "E-26000-N6567500",
    "E-25500-N6567000",
    "E-25500-N6567500"
  ],
  "elevation_blocks": [
    "nhm-dtm-1m"
  ],
  "nhm_laser_projects": [
    {
      "last_flight_date": "2020-01-21",
      "name": "Hommers\u00e5k Drone FOU 2020",
      "points_per_m2": 5,
      "resolution_m": 0.25,
      "season": "snow-season",
      "year": 2020
    },
    {
      "last_flight_date": "2014-04-02",
      "name": "J\u00e6ren 5pkt 2014",
      "points_per_m2": 5,
      "resolution_m": 0.25,
      "season": "snow-season",
      "year": 2014
    },
    {
      "last_flight_date": "2018-05-25",
      "name": "NDH Strandalandet 5pkt 2018",
      "points_per_m2": 5,
      "resolution_m": 0.25,
      "season": "",
      "year": 2018
    },
    {
      "last_flight_date": "2025-07-20",
      "name": "Rogaland 10pkt Vest 2025",
      "points_per_m2": 10,
      "resolution_m": 0.25,
      "season": "",
      "year": 2025
    },
    {
      "last_flight_date": "2008-01-01",
      "name": "Rogaland 2008",
      "points_per_m2": 1,
      "resolution_m": 1,
      "season": "season-unknown",
      "year": 2008
    },
    {
      "last_flight_date": "2009-01-01",
      "name": "Rogaland 2009",
      "points_per_m2": 1,
      "resolution_m": 1,
      "season": "season-unknown",
      "year": 2009
    }
  ],
  "nhm_last_flight_date": "2025-07-20",
  "nhm_snow_season_flights": [
    "Hommers\u00e5k Drone FOU 2020",
    "J\u00e6ren 5pkt 2014"
  ],
  "nhm_flight_season_unknown": [
    "Rogaland 2008",
    "Rogaland 2009"
  ],
  "nhm_retrieved_at": "2026-10-03T15:15:16Z",
  "nhm_note": "laser projects overlapping the route's cells; the mosaic draws on them by its own priority and which project supplied which pixel is not recorded",
  "climb_origin": "discovered",
  "seam_filled_samples": {
    "count": 0,
    "distances_m": []
  },
  "seam_filled_in_maximum": false,
  "structure_own_ways": 1,
  "tunnel_check": "osm tunnel=* ways on 1 own way(s)",
  "tunnel_ranges_m": [],
  "underground_fraction": 0.0,
  "carriageway": {
    "stations": 27,
    "stations_resolved": 27,
    "width_median_m": 5.25,
    "width_p10_m": 3.15,
    "width_min_m": 2.0,
    "width_max_m": 12.0,
    "bounded_share": 0.37,
    "unbounded_share": 0.63,
    "confidence_median": 0.0,
    "width_median_bounded_m": 3.5,
    "window_m": [
      347.0,
      372.0
    ],
    "width_at_max25_m": 3.75,
    "window_stations": 7,
    "single_track": false,
    "single_track_rule": "PROVISIONAL (2026-09-15): width_p10_m <= 3.0 m with bounded_share >= 0.6; recorded, not a rule",
    "status": "ok",
    "source": "dtm",
    "station_m": 25.0,
    "window_station_m": 5.0,
    "halfwidth_m": 6.0,
    "step_m": 0.25,
    "level_tol_m": 0.12,
    "break_min_m": 0.3,
    "stations_failed": 0,
    "hedge_to_hedge": {
      "stations": 27,
      "stations_resolved": 27,
      "width_median_m": 5.75,
      "width_p10_m": 1.65,
      "width_min_m": 1.25,
      "width_max_m": 12.0,
      "bounded_share": 0.704,
      "unbounded_share": 0.296,
      "confidence_median": 1.0,
      "width_median_bounded_m": 2.75,
      "window_m": [
        347.0,
        372.0
      ],
      "width_at_max25_m": 7.25,
      "window_stations": 7,
      "status": "ok",
      "source": "dsm",
      "station_m": 25.0,
      "window_station_m": 5.0,
      "halfwidth_m": 6.0,
      "step_m": 0.25,
      "level_tol_m": 0.5,
      "break_min_m": 0.3,
      "stations_failed": 0
    }
  },
  "license": "ODbL-1.0",
  "license_url": "https://howsteep.org/licensing"
}