OpenHunt Docs
Data

Landlocked methodology

How landlocked public land is computed, the legal assumptions behind it, and exactly where it errs.

This is an advisory layer derived from open data. It is not a legal determination of access. Always confirm access with the managing agency before hunting. Absence from this layer is not permission, and presence in it is not proof of enclosure.

Public land that appears open on a map is not always reachable: an isolated BLM section ringed by private ranch land may have no lawful way in. This layer flags public parcels with no public route.

How it's computed

openhunt-pipeline landlocked marks a public-land part reachable if either:

  1. a public road comes within the road tolerance of it, or
  2. it touches another reachable public-land part.

Rule 2 is transitive, so a chain of adjoining public parcels is reachable if any link in it meets a road. Everything unreached is reported landlocked.

Inputs: PAD-US 4.1 Fee (federal and state managers, excluding land recorded as closed — closed land isn't landlocked, it's closed) and OpenStreetMap roads, excluding private, service, and driveway ways.

Published parameters: --tolerance-m 20 --min-acres 40.

Decisions that materially change the result

Multipolygon parts are exploded

PAD-US aggregates by administrative unit — one BLM field office feature can hold 2,177 disjoint pieces. Treated as a single unit, every piece counts as reachable the moment any one meets a road, which erases exactly the land this layer exists to find. Each disjoint part is independent; an adjacency pass re-joins parts that genuinely touch.

Corner crossing follows the circuit

Parcels meeting only at a corner count as connected where corner crossing between public parcels is lawful — the 10th Circuit (Colorado, Wyoming, Utah, New Mexico, Kansas, Oklahoma) after Iron Bar Holdings v. Cape. This makes OpenHunt's landlocked acreages legitimately lower than published figures that predate the ruling, particularly in Wyoming's checkerboard.

Outside the 10th Circuit the question is unsettled, so the computation flips to requiring a shared boundary edge — the conservative reading. California is computed this way, which is part of why its landlocked total runs higher per public acre than Colorado's.

Road contact uses a 20 m tolerance

Road centrelines are digitised offset from parcel boundaries by roughly half the right-of-way. A developed state park with a road entrance missed by 9.3 m at zero tolerance; 20 m recovered ~1,800 genuinely reachable parcels across Colorado and Wyoming.

Which way it errs

Wrongly calling land reachable can send someone into a trespass. Wrongly calling it landlocked only means they skip huntable ground. The layer prefers the second error everywhere a choice exists.

Known limitations

  • Easements and legal rights-of-way are not modelled. A public easement with no mapped road will not register.
  • OSM access tagging is incomplete. A private road not tagged private counts as access and can mark a parcel reachable when it is not.
  • Water access is not modelled. Parcels reachable only by navigable water are reported landlocked.
  • Adjacency assumes coincident vertices. Boundaries digitised separately by different agencies may not register as touching.
  • Acreage uses a local planar approximation — good to a fraction of a percent at these latitudes, not survey-grade.

Results

StateParts consideredLandlockedAcres
Colorado10,223713~126,800
Wyoming31,9073,748~574,400
California16,9935,590~823,000

Reproducing

openhunt-pipeline run sources/us/osm-roads-co.yaml
openhunt-pipeline landlocked \
  --public data/work/padus-co.ndjson \
  --roads  data/work/osm-roads-co.ndjson \
  --out    data/work/landlocked-co.ndjson \
  --tolerance-m 20 --min-acres 40
openhunt-pipeline tile --input data/work/landlocked-co.ndjson \
  --out data/out/landlocked/landlocked-co.pmtiles \
  --layer landlocked --name "Landlocked public land — CO" \
  --minzoom 5 --maxzoom 13

Outside the 10th Circuit, add --require-shared-edge. Unit tests covering the corner-crossing rules, multipart explosion, road contact, and the manager and access filters live beside the implementation.

On this page