Working version, 9 October 2026

Culvert Finder, Agder

The tool finds every place in Agder where a road or path crosses a mapped stream, river or canal. It checks which of those places have a culvert or bridge in the official road database, and treats the rest as assumed culverts.

48,430 crossings found across 25 municipalities. 9,203 have a registered culvert, 33,083 are assumed culverts without any registration.

RegisteredA culvert is registered here in the road database (NVDB), or tagged in OpenStreetMap.
AssumedA road crosses mapped water and nothing is registered. Most likely a culvert. It can also be a bridge, a ford, or a stream that is not there.
BridgesRegistered small bridges stay visible. Large or probable bridges are hidden by default, since they rarely block fish.

The data it uses

Everything comes from public sources. The tool does not need any field data to run. Field data is only used to check the result.

DataOwnerWhat it gives the toolSize in Agder
Roads and paths
NVDB road networkStatens vegvesenAll road types: European (E), national (R), county (F), municipal (K), private (P) and forest roads (S), plus foot and cycle paths170,000 segments, 17,114 km of road
OpenStreetMapVolunteers (Geofabrik extract, 6 Oct 2026)Roads, tracks and paths that NVDB does not have108,600 ways, +2,564 km of road, 5,894 km of paths
Water
FKB-Vann streams and canalsKartverketThe main stream map: precise centre lines, with a height on every point772,940 lines
FKB-Vann wide riversKartverketRivers wide enough to be drawn as areas20,945 areas
NVE ElvenettNVEA coarser stream network, used to fill places where FKB-Vann has no stream134,193 segments, 32,316 km
NVE lakesNVEKeeps stream lines that run through lakes from counting as crossingsabout 23,000 lakes
Registered structures
NVDB bridges and culvertsStatens vegvesenWhich crossings are registered, with diameter, length, material and whether a stream runs through3,507 bridges, 54,353 culverts
Used for checking only
Field survey of culvertsAgder field survey718 surveyed culverts and bridges, each rated for fish passage718 structures
NINA terrain study (report 2519)NINAAn independent method based on laser-scanned terrain, used as a second opinion in two test areas2 test areas, 7 × 7 km

How a crossing is found

Seven steps run in order. Each step lists the settings it uses.

  1. Cross roads with streams

    Every point where an NVDB road line meets an FKB-Vann stream or canal line becomes a crossing. Several hits close together are one real crossing.

    Merge hits within 15 m
  2. Add roads NVDB does not have

    The same test with OpenStreetMap roads, tracks and paths. A crossing is dropped if the first step already found one close by. State and county roads are left out of this step, since NVDB covers them well.

    Same crossing if within 25 mRoads: track, service, unclassified, residentialPaths: path, footway, cycleway, bridleway
  3. Add streams FKB-Vann does not have

    Stretches of NVE Elvenett that lie far from any FKB-Vann line are tested against the roads. Roads crossing the wide-river areas are added too. Lakes are masked out first.

    Elvenett stretch is a gap if more than 50 m from FKB-VannLakes from NVE masked
  4. Streams that stop at a road

    FKB-Vann often ends the stream line at the road where the water goes into a pipe. If a line ends on one side of a road and another line starts on the other side, and the water would flow from the first to the second, it counts as a crossing. Flow direction comes from the heights stored on the lines.

    Gap at most 45 mLines must point along the gap, within 65°Second line at most 1.5 m higherDirection trusted if the line drops at least 0.5 m
  5. Registered or assumed?

    Each crossing looks for a registered bridge or culvert nearby, in NVDB or tagged in OpenStreetMap. Found and it is a culvert: registered culvert. Found and it is a bridge: small or large by length and span. Not found: assumed culvert. A road crossing a wide river area with nothing registered is treated as a probable bridge.

    Search radius 30 mLarge bridge: 15 m long or 15 m span
  6. Label each crossing

    Road type, with the highest class winning if several meet: European, national, county, municipal, private, forest road, road only in OpenStreetMap, path. Water type: stream or canal and ditch. Municipality.

  7. Keep registered culverts that no stream explains

    NVDB has 54,000 culverts. Many sit where the water maps show no stream, mostly road drainage. They are listed on their own, switched off in the map by default.

    41,186 registered culverts without a mapped stream

Why these settings

Most values were chosen from how the data behaves. The 30 m radius and the large-bridge limit were checked against the field survey.

SettingValueReason
Registered-culvert search radius30 mOf the surveyed culverts that lie within 50 m of one of our crossings, 98% (653 of 666) are already within 30 m. A wider radius adds little and risks matching the wrong culvert.
Large bridge15 m long or span27 of 91 surveyed registered bridges were rated partial or absolute barriers, almost all shorter than 9 m. None of the six bridges of 15 m or more was. Short registered bridges therefore stay visible.
Merge hits15 mA road and a ditch beside it can hit the same stream a few metres apart.
Same crossing from two sources25 mPositions in NVDB, OpenStreetMap and the water maps differ by some metres, so one crossing can show up twice.
Elvenett gap50 mElvenett is a coarser map, so closer lines are treated as the same stream already in FKB-Vann.
Stream-end link45 m, 65°, 1.5 mWide enough to span a road with verges, tight enough to stop two unrelated streams being joined. The height rule keeps water from flowing uphill.

Result

Share of crossings by status, for each road type.

Registered culvertRegistered small bridgeAssumed culvertLarge or probable bridge
Road typeCrossingsShare by statusAssumedRoad length

On national and county roads almost all crossings are registered (only 4% and 6% are assumed). On municipal, private and forest roads and on paths, 69 to 89% are assumed. That matches how the data is kept: owners of those roads are not required to register culverts.

How well does it work?

Field survey

Of 718 surveyed culverts and bridges, 91% lie within 30 m of one of our crossings. The share is the same for culverts rated as barriers and those rated no barrier.

Limit: 96% of these are on county roads. The survey says little about municipal and private roads, where the largest gap is.

Independent terrain method

In two 7 × 7 km test areas, 67–82% of our crossings have a terrain-derived culvert point within 25 m (84–95% within 50 m).

The terrain method finds 8 to 11 times as many points, mostly small drainage lines. It cannot say which of them carry a real stream.

Manual checking of the map so far has found few mistakes, mostly on small waterways. A filter separates streams from canals and ditches, which are often roadside ditches.

Known limits

Next

The first filter planned is reachability for anadromous fish, using Miljødirektoratet's open datasets on anadromous reaches and migration barriers. Each crossing will also need to carry the nearest stream in the NVE network, so the route down to the sea can be followed.

Sources: Statens vegvesen (NVDB), Kartverket (FKB-Vann, municipal boundaries, topographic map), NVE (Elvenett, lakes), OpenStreetMap contributors (via Geofabrik), NINA report 2519 (2025), field survey of culverts in Agder. All counts are for Agder (fylke 42), from the 9 October 2026 run.

💬 Innspill