Weight¶
Calculation of weight related aircraft metrics is straightforward, if OEW, MTOW and the passenger exit limit are known.
Imports¶
In [1]:
Copied!
import pandas as pd
import pint
ureg = pint.get_application_registry()
import plotly.graph_objects as go
import pandas as pd
import pint
ureg = pint.get_application_registry()
import plotly.graph_objects as go
In [2]:
Copied!
from aircraftdetective.processing.literature import process_data_weinold_database
from aircraftdetective.calculations.weight import calculate_weight_metrics
from aircraftdetective.processing.literature import process_data_weinold_database
from aircraftdetective.calculations.weight import calculate_weight_metrics
Data Processing¶
In [3]:
Copied!
df_acft = process_data_weinold_database()
df_acft = calculate_weight_metrics(df_acft)
df_acft = process_data_weinold_database()
df_acft = calculate_weight_metrics(df_acft)
In [4]:
Copied!
df_acft.head(5)
df_acft.head(5)
Out[4]:
| Manufacturer | Aircraft Designation | Aircraft Designation (Literature) | Aircraft Designation (aircraft-database.com) | Aircraft Designation (US DOT Schedule T2) | Type | YOI | Engine Designation (ICAO) | Engine Designation (aircraft-database.com) | Design Range | ... | Sources (Weights) | Comments | Payload/Range: Range at Point B | Payload/Range: Range at Point C | Payload/Range: MZFW at Point B | Payload/Range: MZFW at Point C | Payload/Range: MTOW | Source (Payload/Range) | OEW/MTOW | OEW/Exit Limit | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Airbus | A220-100 | NaN | A220-100 | A200-100 BD-500-1A10 | Narrow | 2016 | PW1519G | PW1519G | 6700.0 | ... | https://aircraft.airbus.com/sites/g/files/jlcb... | NaN | 3598.3749284019223 | 7158.606627935522 | 50350.0026357575 | 43169.9977927272 | 60781.0 | https://aircraft.airbus.com/sites/g/files/jlcb... | 0.558161648177496 | 293.5 |
| 1 | Airbus | A220-300 | NaN | A220-300 | A220-300 BD-500-1A11 | Narrow | 2016 | PW1521G | PW1521G | 6300.0 | ... | https://aircraft.airbus.com/sites/g/files/jlcb... | NaN | 3681.3845400518944 | 6230.448593959429 | 55791.8615 | 49986.0186311349 | 67585.0 | https://aircraft.airbus.com/sites/g/files/jlcb... | 0.5229901269393512 | 264.85714285714283 |
| 2 | Airbus | A300-600 | A300-600 | A300 B4-600 | Airbus Industrie A300-600/R/CF/RCF | Wide | 1984 | CF6-80C2A5 | CF6-80C2A5 | 6852.0 | ... | [JAWA:07/08] | NaN | 3621.6888888888893 | 5700.044444444445 | 129255.84717830301 | 115645.08717830303 | 165035.00191999998 | https://www.airbus.com/sites/g/files/jlcbta136... | 0.4800606060606061 | 219.41828254847644 |
| 3 | Airbus | A300-600 | A300-600 | A300 B4-601 | Airbus Industrie A300-600/R/CF/RCF | Wide | 1986 | PW4158 | PW4158 | 6852.0 | ... | [JAWA:07/08] | NaN | 3621.6888888888893 | 5700.044444444445 | 129255.84717830301 | 115645.08717830303 | 165035.00191999998 | https://www.airbus.com/sites/g/files/jlcbta136... | 0.4797030303030303 | 219.25484764542935 |
| 4 | Airbus | A310-200 | NaN | A310-200 | Airbus Industrie A310-200C/F | Wide | 1983 | JT9D-7R4D* | JT9D-7R4D* | 6500.0 | ... | [JAWA:07/08] | NaN | nan | nan | nan | nan | nan | https://www.airbus.com/sites/g/files/jlcbta136... | 0.5375 | 281.45454545454544 |
5 rows × 33 columns
Visualization¶
In [5]:
Copied!
fig = go.Figure()
type_color_map = {'Narrow': 'blue', 'Wide': 'red', 'Regional': 'green'}
marker_colors = df_acft['Type'].map(type_color_map)
for typ, col in type_color_map.items():
df_t = df_acft[df_acft['Type'] == typ]
if df_t.empty:
continue
fig.add_trace(go.Scatter(
x=df_t['YOI'],
y=df_t['OEW/Exit Limit'].pint.magnitude,
mode='markers',
marker=dict(opacity=0.7, color=col),
name=typ,
showlegend=True,
text=df_t['Aircraft Designation'],
))
fig.update_layout(
xaxis_title="Year of Introduction (YOI)",
yaxis_title="OEW/Exit Limit [kg]",
legend_title_text="Type",
legend=dict(
x=0.01,
y=0.01,
xanchor='left',
yanchor='bottom',
)
)
fig.show(renderer="notebook")
fig = go.Figure()
type_color_map = {'Narrow': 'blue', 'Wide': 'red', 'Regional': 'green'}
marker_colors = df_acft['Type'].map(type_color_map)
for typ, col in type_color_map.items():
df_t = df_acft[df_acft['Type'] == typ]
if df_t.empty:
continue
fig.add_trace(go.Scatter(
x=df_t['YOI'],
y=df_t['OEW/Exit Limit'].pint.magnitude,
mode='markers',
marker=dict(opacity=0.7, color=col),
name=typ,
showlegend=True,
text=df_t['Aircraft Designation'],
))
fig.update_layout(
xaxis_title="Year of Introduction (YOI)",
yaxis_title="OEW/Exit Limit [kg]",
legend_title_text="Type",
legend=dict(
x=0.01,
y=0.01,
xanchor='left',
yanchor='bottom',
)
)
fig.show(renderer="notebook")