Architecture¶
HyPlan is organized around six subsystems that compose into a flight-planning pipeline. Each subsystem is a self-contained package or module with a well-defined interface.
Data flow¶
FlightLine / Waypoint / Pattern
│
▼
FlightBox / FlightPatterns ──▶ Campaign / flight sequence
│
Aircraft ──▶ │ ◀── WindField
▼
compute_flight_plan
│
▼
GeoDataFrame
╱ ╲
exports plotting
Subsystems¶
Geometry and flight lines¶
The atomic unit of data collection is a
FlightLine — a straight-and-level segment
defined by two endpoints, an altitude, and metadata. Flight lines are
generated individually or in bulk via
box_around_center_line() (parallel coverage of a
study area) and the pattern generators in hyplan.flight_patterns
(racetracks, rosettes, spirals, polygons). Pattern generators now return
Pattern, which preserves generator parameters and
element ordering for reuse, editing, and persistence. Intermediate route
points use Waypoint.
Planning¶
compute_flight_plan() is the main orchestrator. It
takes an ordered sequence of flight lines, waypoints, and patterns,
connects them with 3-D Dubins paths (hyplan.dubins3d), classifies
each segment (takeoff, climb, transit, flight line, descent, approach,
pattern), and returns a GeoDataFrame with timing,
distance, altitude, and geometry for every segment. The
hyplan.flight_optimizer provides graph-based line ordering with
endurance constraints and refueling stops.
See: Flight Plan, Flight Optimizer, Dubins 3D
Winds and atmosphere¶
The WindField abstract base defines a single
method — wind_at(lat, lon, altitude, time) — that returns eastward and
northward wind components. Concrete implementations range from
StillAirField and
ConstantWindField to gridded providers that fetch
data from MERRA-2, NOAA GFS, and GMAO GEOS-FP via OPeNDAP or GRIB.
The planner uses these to compute crab angles, groundspeeds, and
wind-corrected segment times.
The hyplan.atmosphere module provides the International Standard
Atmosphere (ISA) model for pressure-altitude conversions and airspeed
calculations (CAS/TAS/Mach).
See: Winds, Atmosphere
Aircraft¶
Aircraft models an aircraft’s performance
envelope: speed schedules (CAS/Mach vs altitude), climb and descent rates,
bank angles, turn radii, and endurance. Fifteen pre-configured research
aircraft are included (NASA ER-2, GV, P-3, etc.). The planner calls
time_to_cruise, time_to_takeoff, and time_to_return to generate
Dubins paths with realistic vertical profiles.
See: Aircraft
Terrain and swath¶
hyplan.terrain downloads and caches 30-meter Copernicus DEM tiles,
merges them with rasterio, and provides bulk elevation lookup and a
vectorized ray-terrain intersection algorithm for off-nadir sensors.
hyplan.swath computes ground footprint polygons for any sensor type
using the sensor’s half-angle and the flight line geometry.
Exports and visualization¶
Flight plans are exported to pilot-facing formats (ForeFlight CSV, Honeywell
FMS, Excel briefing sheets), archival formats (ICARTT, KML, GPX), and
plain text. hyplan.plotting provides Folium maps, altitude profiles,
and terrain cross-sections.
Supporting modules¶
Module |
Purpose |
|---|---|
Solar position and data-collection windows |
|
Specular reflection (glint) angle prediction |
|
Cloud climatology via Open-Meteo or Google Earth Engine |
|
Satellite overpass prediction and temporal coincidence |
|
|
Airspace conflict detection (OpenAIP, FAA TFR/NASR) |
Airport database and runway queries |
|
|
Persistent folder structure, revision metadata, and mutation API for a study area |
|
Serializable reusable pattern object returned by pattern generators |
Units¶
All public APIs accept and return pint.Quantity objects with
explicit units. The shared unit registry is
hyplan.units.ureg. Parameter names include suffixes like _msl,
_agl, _cas, _tas to make the reference frame explicit.