NTSB finding · Environmental issues › Physical environment › Terrain

Cases
267
In the probable cause
98 (37%)
Fatal cases
24
NTSB code
03021000

NTSB has coded findings and defining events since 2008. Earlier cases used its older occurrence and cause codes, so they aren’t counted here.

When and where

In green, cases where NTSB made it part of the probable cause; in gray, a factor or other finding. Findings are coded with the final report, often a year or more after the event, so the latest years are incomplete.

Cases per year

2008In the probable causeFactor only2026
Cases with Terrain, general per year: 267 cases
200854
200929
201011
201111
201210
201318
201424
201522
201626
201719
201812
20196
20208
20215
20224
20235
20241
20252
Query with SQL
duckdb -csv -c "SELECT year(c.\"eventDate\") AS year, count(DISTINCT f.case_mkey) AS cases,
    count(DISTINCT f.case_mkey) FILTER (WHERE f.\"inProbableCause\") AS in_probable_cause
  FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = f.case_mkey
  WHERE starts_with(f.\"findingCode\", '03021000') AND c.\"eventDate\" >= DATE '2000-01-01'
  GROUP BY 1
  ORDER BY 1"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

In the same cases

Query with SQL
duckdb -csv -c "WITH matched AS (SELECT DISTINCT case_mkey, aircrafts_position FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' WHERE starts_with(\"findingCode\", '03021000'))
  SELECT * FROM (
  SELECT 'Defining event' AS kind, e.\"tier2Number\" AS code, max(e.\"eventTier2Name\") AS name, count(DISTINCT f.case_mkey) AS cases
  FROM matched f JOIN 'https://openairdocs.org/data/latest/ntsb_events.parquet' e ON e.case_mkey = f.case_mkey AND e.aircrafts_position = f.aircrafts_position AND e.\"isDefiningEvent\"
  WHERE e.\"tier2Number\" <> ''
  GROUP BY ALL
  UNION ALL
  SELECT 'Aircraft model', a.aircraft_model_code, any_value(concat_ws(' ', m.manufacturer, m.model)), count(DISTINCT f.case_mkey)
  FROM matched f JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = f.case_mkey AND a.position = f.aircrafts_position
  LEFT JOIN 'https://openairdocs.org/data/latest/faa_aircraft_model.parquet' m ON m.code = a.aircraft_model_code
  WHERE a.aircraft_model_code IS NOT NULL
  GROUP BY ALL
  UNION ALL
  SELECT 'Other finding', left(g.\"findingCode\", 8), max(g.\"tier4Name\"), count(DISTINCT g.case_mkey)
  FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' g
  WHERE g.case_mkey IN (SELECT case_mkey FROM matched) AND NOT starts_with(g.\"findingCode\", '03021000') AND g.\"findingCode\" GLOB '[0-9][0-9]*'
  GROUP BY ALL
  )
  QUALIFY row_number() OVER (PARTITION BY kind ORDER BY cases DESC) <= 10
  ORDER BY kind, cases DESC"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

Newest cases · 267

NTSB ANC25LA121Accident · No injuriesClass 4 · LimitedFinal reportMaule M-4-210C · Lime Village, AKA collision with terrain during takeoff.Sep 18, 2025 · N4612T · Substantial damageNTSB WPR25LA246Accident · No injuriesClass 4 · LimitedFinal reportHiller UH-12E · Fobes Hill, WAThe pilot’s abrupt maneuver to avoid a powerline during an aerial application flight, which resulted in the helicopter’s impact with terrain.Aug 11, 2025 · N703WA · Substantial damageNTSB WPR24LA265Accident · Minor injuriesClass 3 · LimitedFinal reportBell 407 · Raft River, IDThe pilot’s misdiagnosis of an erroneous engine instrument indication and his subsequent decision to enter an autorotation, which resulted in a hard landing due to degraded visual cues and low ambient light conditions. Contributing to the accident were the…Aug 3, 2024 · N20BH · Substantial damageNTSB CEN24LA069Accident · Minor injuriesClass 4 · LimitedFinal reportAero Commander 100 · Texarkana, ARThe pilot’s improper decision to attempt a go-around with full flaps extended, which resulted in decreased climb performance and led to a collision with trees.Dec 18, 2023 · N4104X · Substantial damageNTSB CEN24LA002Accident · No injuriesClass 3 · LimitedFinal reportCessna 182R · Olathe, KSThe pilot’s mismanagement of the available fuel which resulted in a total loss of engine power due to fuel starvation.Oct 1, 2023 · N357HT · Substantial damageNTSB CEN23LA357Accident · No injuriesClass 4 · LimitedFinal reportPiper PA25 · Hartington, NEThe pilot’s misperception of the rising terrain resulting in a collision with crops and terrain.Aug 8, 2023 · N8847L · Substantial damageNTSB CEN23LA300Accident · No injuriesClass 4 · LimitedFinal reportAcrosport II · Hertford, NCThe pilot’s failure to maintain directional control during landing, which resulted in a runway excursion and subsequent impact with vegetation.Jul 12, 2023 · N827JA · Substantial damageNTSB CEN23LA212Accident · Minor injuriesClass 4 · LimitedFinal reportGrumman Acft ENG Cor-Schweizer G-164B · Light, ARThe pilot exceeding the climb capability of the airplane during takeoff which led to it settling into the ground.May 29, 2023 · N6678Q · Substantial damageNTSB CEN23LA006Accident · Serious injuriesClass 4 · LimitedFinal reportAerostar International S53A · Albuquerque, NMThe pilot’s inability to find a suitable landing area in a critical fuel situation and his decision to land on a highway, which resulted in the balloon impacting a bridge railing and terrain.Oct 7, 2022 · N9140F · Minor damageNTSB CEN23LA002Accident · No injuriesClass 4 · LimitedFinal reportChampion 7KCAB · Danville, ILThe pilot decision to perform a precautionary landing to a field with obstacles which resulted in a ground loop. Contributing was the pilot’s inadequate fuel planning.Oct 2, 2022 · N869TT · Substantial damage
See all 267 cases
Query with SQL
duckdb -csv -c "SELECT c.\"ntsbNumber\", c.\"eventDate\", c.\"eventType\", c.\"eventCity\", c.\"eventStateOrRegion\", a.n_number, a.\"aircraftMake\", a.\"aircraftModel\", c.\"highestInjuryLevel\", c.\"totalFatal\", c.\"completionStatus\", c.report_url
  FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = c.\"mKey\" AND a.position = 1
  WHERE c.\"mKey\" IN (SELECT f.case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f WHERE starts_with(f.\"findingCode\", '03021000'))
  ORDER BY c.\"eventDate\" DESC, c.\"ntsbNumber\" DESC"

Prints the whole list as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.