Ir al contenido
Esta documentación describe la versión 4.0.0, todavía sin publicar. La versión actual en PyPI es la 3.3.0 y no incluye todo lo que se describe aquí.

aircraft.anp_fleet

La referencia de la API se publica en inglés en los dos idiomas: se genera a partir de los docstrings del código, que son su texto original.

EASA ANP fleet database bridge for the ECAC Doc 29 airport-noise chain.

The ECAC Doc 29 method in phonometry.aircraft.airport_noise places an aircraft’s noise at a receiver from a Noise-Power-Distance (NPD) table and a flight profile. Both come, for real aircraft types, from the Aircraft Noise and Performance (ANP) database maintained by EUROCONTROL/EASA: per aircraft it tabulates NPD curves (LAmax and SEL versus slant distance for a set of engine power settings, per operation mode) and default trajectories.

This module reads the ANP database tables (the semicolon-delimited CSV exports) and exposes, for a given aircraft identifier and operation:

  • AnpNpdCurves — the NPD curves (LAmax/SEL versus distance for each tabulated power), with a .plot();
  • AnpProfile — the default fixed-point trajectory as a Doc 29 flight path (N, 5) with the takeoff/landing ground-roll masks, with a .plot();
  • AnpAircraft — the aircraft metadata plus convenience wiring (AnpAircraft.event_level, AnpAircraft.noise_contour) that feeds the NPD curves and the profile straight into the existing Doc 29 functions.

load_anp_database returns an AnpDatabase. Called without a path it loads the full EASA ANP database (archive version 2.3) shipped with the package (see aircraft/data/anp/PROVENANCE.md); pointed at a directory it reads any other ANP CSV export the user provides.

Aircraft whose default trajectory is published as procedural steps rather than as fixed points are reached through phonometry.aircraft.flight_performance, the ECAC Doc 29 Vol. 2 Appendix B performance model: AnpDatabase.flight_profile flies the published procedure for an aerodrome and its weather, and AnpDatabase.procedural_profile returns the result as the same Doc 29 flight path the fixed-point bridge produces, so either kind of profile feeds the same chain. NPD curves are available for every aircraft regardless.

Source (clean-room, implemented from the published table format): EASA ANP database v2.3 (2020) and the ECAC Doc 29 4th ed. Vol 2 NPD/profile conventions.

Auto-generated from the source docstrings by scripts/generate_api_docs.py (make api-docs). Do not edit by hand.

AnpAircraft(
aircraft_id: str,
description: str,
engine_type: str,
num_engines: int,
weight_class: str,
mounting: str,
npd_id: str,
power_parameter: str,
_database: AnpDatabase,
)

One ANP aircraft type: metadata plus NPD/profile access and Doc 29 wiring.

Attributes

NameDescription
aircraft_idANP aircraft identifier (e.g. "747100").
descriptionHuman-readable aircraft/engine description.
engine_type"Jet", "Turboprop" or "Piston".
num_enginesNumber of engines.
weight_classICAO wake weight class.
mountingDoc 29 engine mounting ("wing"/"fuselage"/"propeller").
npd_idANP noise identifier.
power_parameterName/unit of the NPD power parameter.
AnpAircraft.event_level(
observer: NDArray[np.float64] | list[float],
operation: str,
*,
aerodrome: Aerodrome | None = None,
stage_length: int | str = 1,
metric: EventMetric = 'exposure',
temperature: float | None = None,
pressure: float | None = None,
) -> FlyoverResult

Single-event level at a receiver (see AnpDatabase.event_level).

AnpAircraft.noise_contour(
operation: str,
*,
x: NDArray[np.float64] | list[float],
y: NDArray[np.float64] | list[float],
aerodrome: Aerodrome | None = None,
stage_length: int | str = 1,
metric: EventMetric = 'exposure',
temperature: float | None = None,
pressure: float | None = None,
) -> NoiseContourResult

Single-event ground contour (see AnpDatabase.noise_contour).

AnpAircraft.npd_curves(operation: str, metric: str = 'SEL') -> AnpNpdCurves

NPD curves for this aircraft (see AnpDatabase.npd_curves).

AnpAircraft.profile(
operation: str,
stage_length: int = 1,
*,
profile_id: str | None = None,
) -> AnpProfile

Fixed-point profile (see AnpDatabase.profile).

AnpDatabase(
aircraft: Mapping[str, dict[str, str]],
npd: Mapping[tuple[str, str, str], tuple[NDArray[np.float64], NDArray[np.float64]]],
distances: NDArray[np.float64],
profiles: Mapping[tuple[str, str, str, int], NDArray[np.float64]],
performance: _PerformanceTables | None = None,
)

A parsed ANP database (aircraft metadata, NPD curves and default profiles).

Build one with load_anp_database. NPD curves are available for every aircraft; default profiles are available for aircraft that have a fixed-point trajectory in the database, and procedural-step profiles for those whose coefficient and step tables the export carries.

AnpDatabase.aircraft(aircraft_id: str) -> AnpAircraft

Return the AnpAircraft for an identifier.

Raises

ExceptionWhen
KeyErrorIf the identifier is not in the database.

property

Sorted list of aircraft identifiers in the database.

AnpDatabase.event_level(
aircraft_id: str,
observer: NDArray[np.float64] | list[float],
operation: str,
*,
aerodrome: Aerodrome | None = None,
stage_length: int | str = 1,
metric: EventMetric = 'exposure',
temperature: float | None = None,
pressure: float | None = None,
) -> FlyoverResult

Doc 29 single-event level of an ANP aircraft at a receiver.

Feeds the aircraft’s profile and NPD curves into phonometry.aircraft.airport_noise.event_level.

Parameters

NameDescription
aircraft_idANP aircraft identifier.
observerReceiver position (x, y, z), in metres.
operation"departure"/"D" or "arrival"/"A".
aerodromeFly the published procedural steps at this field through the Appendix B performance model instead of reading the tabulated fixed-point trajectory. Most ANP types publish only steps, so for them this is not an alternative but the only way in.
stage_lengthANP stage length (default 1).
metric"exposure" (SEL) or "maximum" (LAmax).
temperatureAir temperature at the field, in °C, for the atmospheric impedance adjustment. Left unset it follows aerodrome, or the standard atmosphere when there is none.
pressureAir pressure at the field, in kPa, likewise.

Returns: A FlyoverResult.

AnpDatabase.flight_profile(
aircraft_id: str,
operation: str,
*,
aerodrome: Aerodrome,
stage_length: int | str = 1,
profile_id: str | None = None,
weight_lb: float | None = None,
) -> FlightProfile

Fly an aircraft’s published procedure into a Doc 29 flight profile.

The ECAC Doc 29 Vol. 2 Appendix B model applied to this aircraft’s ANP procedural steps: the profile depends on the aerodrome and its weather, which is why one has to be given and why the answer is not a table entry.

Parameters

NameDescription
aircraft_idANP aircraft identifier.
operation"departure"/"D" or "arrival"/"A".
aerodromeThe Aerodrome to fly from, carrying its elevation, temperature, pressure and headwind.
stage_lengthANP stage length (default 1), which selects the take-off weight of a departure.
profile_idOptional ANP profile identifier.
weight_lbWeight to fly at, lb. None (default) takes the ANP default weight for the stage length on a departure, and 90 % of the maximum landing weight on an arrival, as Doc 29 defines it.

Returns: A FlightProfile.

Raises

ExceptionWhen
KeyErrorIf the aircraft has no procedural-step profile or no default weight for the request.
AnpDatabase.noise_contour(
aircraft_id: str,
operation: str,
*,
x: NDArray[np.float64] | list[float],
y: NDArray[np.float64] | list[float],
aerodrome: Aerodrome | None = None,
stage_length: int | str = 1,
metric: EventMetric = 'exposure',
temperature: float | None = None,
pressure: float | None = None,
) -> NoiseContourResult

Doc 29 single-event ground contour of an ANP aircraft.

Feeds the aircraft’s profile and NPD curves into phonometry.aircraft.airport_noise.noise_contour.

Parameters

NameDescription
aircraft_idANP aircraft identifier.
operation"departure"/"D" or "arrival"/"A".
xGrid x coordinates (along-track), in metres.
yGrid y coordinates (lateral), in metres.
aerodromeFly the published procedural steps at this field through the Appendix B performance model instead of reading the tabulated fixed-point trajectory. Most ANP types publish only steps, so for them this is not an alternative but the only way in.
stage_lengthANP stage length (default 1).
metric"exposure" (SEL) or "maximum" (LAmax).
temperatureAir temperature at the field, in °C, for the atmospheric impedance adjustment. Left unset it follows aerodrome, or the standard atmosphere when there is none.
pressureAir pressure at the field, in kPa, likewise.

Returns: A NoiseContourResult.

AnpDatabase.npd_curves(
aircraft_id: str,
operation: str,
metric: str = 'SEL',
) -> AnpNpdCurves

NPD curves for an aircraft, operation and noise metric.

Parameters

NameDescription
aircraft_idANP aircraft identifier.
operation"departure"/"D" or "arrival"/"A".
metric"SEL" (default) or "LAmax".

Returns: An AnpNpdCurves.

Raises

ExceptionWhen
KeyErrorIf the aircraft has no NPD data for the request.
ValueErrorIf the metric or operation is unknown.
AnpDatabase.performance_aircraft(aircraft_id: str) -> PerformanceAircraft

The aeroplane’s ECAC Doc 29 Vol. 2 Appendix B coefficient set.

Gathers the engine, aerodynamic and weight tables into the PerformanceAircraft the performance model takes. The engine count, the maximum sea-level static thrust and the maximum landing weight come from the aircraft table; the approach weight follows from the last of those as Doc 29 defines it.

Parameters

NameDescription
aircraft_idANP aircraft identifier.

Returns: A PerformanceAircraft.

Raises

ExceptionWhen
KeyErrorIf the aircraft is not in the database.
ValueErrorIf the export carries no performance tables at all, which is the case for an NPD-only export.
AnpDatabase.procedural_profile(
aircraft_id: str,
operation: str,
*,
aerodrome: Aerodrome,
stage_length: int | str = 1,
profile_id: str | None = None,
weight_lb: float | None = None,
) -> AnpProfile

A flown procedure as the flight path the Doc 29 noise chain reads.

flight_profile converted into the same AnpProfile the fixed-point bridge returns, so an aircraft that publishes procedural steps and one that publishes fixed points feed event_level and noise_contour alike. The units change on the way (Appendix B works in feet, knots and pounds; the noise chain in metres and metres per second) and the power setting stays the corrected net thrust per engine the NPD tables are indexed on.

Takes the same arguments as flight_profile.

Returns: An AnpProfile.

AnpDatabase.procedural_steps(
aircraft_id: str,
operation: str,
stage_length: int | str = 1,
*,
profile_id: str | None = None,
) -> tuple[DepartureStep, ...] | tuple[ApproachStep, ...]

The published procedure for an aircraft, as procedural steps.

The rows of the ANP departure or approach procedural-step table, in step order, as the types flight_performance flies. Approach procedures are not tabulated per stage length, so stage_length is read only for a departure.

Parameters

NameDescription
aircraft_idANP aircraft identifier.
operation"departure"/"D" or "arrival"/"A".
stage_lengthANP stage length (default 1), departures only.
profile_idOptional ANP profile identifier; None (default) selects "DEFAULT" when present, or the single available one.

Returns: The steps, in order.

Raises

ExceptionWhen
KeyErrorIf the aircraft has no procedural-step profile for the request, or profile_id is not among the available ones.
ValueErrorIf profile_id is None and several profiles exist with none of them named "DEFAULT".
AnpDatabase.profile(
aircraft_id: str,
operation: str,
stage_length: int | str = 1,
*,
profile_id: str | None = None,
) -> AnpProfile

Fixed-point trajectory for an aircraft, operation and stage length.

Aircraft may ship several fixed-point profiles for the same operation and stage length (e.g. weight variants). With profile_id=None the "DEFAULT" profile is selected when present; otherwise the single available profile is used, and an ambiguous request (several profiles, none named "DEFAULT") raises listing the identifiers.

Parameters

NameDescription
aircraft_idANP aircraft identifier.
operation"departure"/"D" or "arrival"/"A".
stage_lengthANP stage length (default 1).
profile_idOptional ANP profile identifier (e.g. "DEFAULT", "3000LB"); None (default) selects as described above.

Returns: An AnpProfile (a Doc 29 flight path with ground-roll masks).

Raises

ExceptionWhen
KeyErrorIf the aircraft is unknown, has no fixed-point profile for the request, or profile_id is not among the available ones.
ValueErrorIf profile_id is None and several profiles exist with none of them named "DEFAULT".
AnpNpdCurves(
aircraft_id: str,
npd_id: str,
metric: str,
operation: str,
power_parameter: str,
powers: NDArray[np.float64],
distances: NDArray[np.float64],
levels: NDArray[np.float64],
)

ANP Noise-Power-Distance curves for one aircraft, metric and operation.

Attributes

NameDescription
aircraft_idANP aircraft identifier.
npd_idANP noise identifier (shared by aircraft with the same NPD set).
metric"SEL" or "LAmax".
operation"A" (arrival) or "D" (departure).
power_parameterName/unit of the power setting (e.g. corrected net thrust).
powersTabulated engine power settings (1-D, strictly increasing).
distancesTabulated slant distances, in metres (1-D, strictly increasing).
levelsTabulated event levels, shape (len(powers), len(distances)), in dB.

The powers, distances and levels arrays are read-only views shared with the parent database; copy them before mutating.

AnpNpdCurves.level(
power: float,
distance: NDArray[np.float64] | list[float] | float,
) -> NDArray[np.float64]

Interpolated NPD level L(P, d) (Doc 29 Eq. 4-3/4-4).

Parameters

NameDescription
powerQuery engine power setting.
distanceQuery slant distance(s), in metres.

Returns: The interpolated level per query distance, in dB.

AnpNpdCurves.plot(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Plot the NPD curve at each tabulated power versus slant distance.

AnpProfile(
aircraft_id: str,
operation: str,
profile_id: str,
stage_length: int | str,
path: NDArray[np.float64],
ground_roll: NDArray[np.bool_],
landing_roll: NDArray[np.bool_],
)

Default fixed-point trajectory of an ANP aircraft as a Doc 29 flight path.

Attributes

NameDescription
aircraft_idANP aircraft identifier.
operation"A" (arrival) or "D" (departure).
profile_idANP profile label (usually "DEFAULT").
stage_lengthANP stage length (trip-distance/weight bin). Usually one of the numbered bins, but the database’s own column also carries "M" for a maximum-weight procedure, so the label is kept as it is read.
pathFlight-path points, shape (N, 5): x, y, z (m, along-track, lateral, altitude), engine power setting and true airspeed (m/s).
ground_rollBoolean mask (length N-1) of takeoff ground-roll segments.
landing_rollBoolean mask (length N-1) of landing rollout segments.

path is a read-only view shared with the parent database; copy it before mutating.

AnpProfile.plot(
ax: Axes | None = None,
*,
language: str = 'en',
**kwargs: Any,
) -> Axes

Plot the trajectory altitude versus along-track distance.

load_anp_database(path: Path | str | None = None) -> AnpDatabase

Load an EASA ANP database (aircraft, NPD curves and default profiles).

Parameters

NameDescription
pathDirectory of an ANP CSV export (the *Aircraft.csv, *NPD_data.csv, *fixed_point_profiles.csv tables, plus the optional performance tables the procedural-step model reads: *engine_coefficients.csv, *Aerodynamic_coefficients.csv, *weights.csv and the two *procedural_steps.csv). If None (default), loads the full EASA ANP database v2.3 shipped with the package (see aircraft/data/anp/PROVENANCE.md).

Returns: An AnpDatabase.

Raises

ExceptionWhen
FileNotFoundErrorIf a required table is missing.