pyBADA 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyBADA/TCL.py +8731 -0
- pyBADA/__init__.py +0 -0
- pyBADA/aircraft/BADA3/DUMMY/BADA.GPF +113 -0
- pyBADA/aircraft/BADA3/DUMMY/BZJT__.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/BZJT__.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/BZJT__.PTD +139 -0
- pyBADA/aircraft/BADA3/DUMMY/BZJT__.PTF +73 -0
- pyBADA/aircraft/BADA3/DUMMY/GA____.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/GA____.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/GA____.PTD +71 -0
- pyBADA/aircraft/BADA3/DUMMY/GA____.PTF +39 -0
- pyBADA/aircraft/BADA3/DUMMY/J2H___.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/J2H___.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/J2H___.PTD +131 -0
- pyBADA/aircraft/BADA3/DUMMY/J2H___.PTF +69 -0
- pyBADA/aircraft/BADA3/DUMMY/J2M___.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/J2M___.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/J2M___.PTD +123 -0
- pyBADA/aircraft/BADA3/DUMMY/J2M___.PTF +65 -0
- pyBADA/aircraft/BADA3/DUMMY/J4H___.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/J4H___.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/J4H___.PTD +139 -0
- pyBADA/aircraft/BADA3/DUMMY/J4H___.PTF +73 -0
- pyBADA/aircraft/BADA3/DUMMY/ReleaseSummary +35 -0
- pyBADA/aircraft/BADA3/DUMMY/SYNONYM.NEW +155 -0
- pyBADA/aircraft/BADA3/DUMMY/TP2M__.APF +25 -0
- pyBADA/aircraft/BADA3/DUMMY/TP2M__.OPF +61 -0
- pyBADA/aircraft/BADA3/DUMMY/TP2M__.PTD +99 -0
- pyBADA/aircraft/BADA3/DUMMY/TP2M__.PTF +53 -0
- pyBADA/aircraft/BADA4/DUMMY/ACM_BADA4.xsd +556 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.ATF +106 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST.xml +244 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTD +182 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA+20.PTF +41 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTD +182 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-PST/Dummy-PST_ISA.PTF +41 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.ATF +191 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP.xml +540 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTD +218 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA+20.PTF +49 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTD +218 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/Dummy-TBP_ISA.PTF +49 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/LRC.dat +38 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/MEC.dat +58 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/MRC.dat +38 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TBP/OPTALT.dat +37 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.ATF +204 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN.xml +648 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTD +281 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA+20.PTF +63 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTD +281 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/Dummy-TWIN_ISA.PTF +63 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/ECON.OPT +37 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/LRC.OPT +38 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/MEC.OPT +58 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/MRC.OPT +38 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN/OPTALT.OPT +37 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.ATF +238 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus.xml +737 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTD +281 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA+20.PTF +63 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTD +281 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/Dummy-TWIN-plus_ISA.PTF +63 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/ECON.OPT +37 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/LRC.OPT +36 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MEC.OPT +56 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/MRC.OPT +36 -0
- pyBADA/aircraft/BADA4/DUMMY/Dummy-TWIN-plus/OPTALT.OPT +37 -0
- pyBADA/aircraft/BADA4/DUMMY/GPF.xml +130 -0
- pyBADA/aircraft/BADA4/DUMMY/GPF_BADA4.xsd +75 -0
- pyBADA/aircraft/BADA4/DUMMY/aircraft_model_default.xml +311 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH.ATF +97 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH.xml +82 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTD +632 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA+20.PTF +71 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTD +632 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/DUMH_ISA.PTF +71 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/LRC.OPT +142 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/MEC.OPT +142 -0
- pyBADA/aircraft/BADAH/DUMMY/DUMH/MRC.OPT +142 -0
- pyBADA/aircraft.py +414 -0
- pyBADA/atmosphere.py +345 -0
- pyBADA/bada3.py +4566 -0
- pyBADA/bada4.py +5327 -0
- pyBADA/badaE.py +3317 -0
- pyBADA/badaH.py +3632 -0
- pyBADA/configuration.py +98 -0
- pyBADA/constants.py +64 -0
- pyBADA/conversions.py +197 -0
- pyBADA/data/magneticDeclinationGridData.json +247067 -0
- pyBADA/flightTrajectory.py +929 -0
- pyBADA/geodesic.py +760 -0
- pyBADA/magnetic.py +119 -0
- pyBADA/trajectoryPrediction.py +175 -0
- pybada-0.1.0.dist-info/METADATA +57 -0
- pybada-0.1.0.dist-info/RECORD +99 -0
- pybada-0.1.0.dist-info/WHEEL +4 -0
- pybada-0.1.0.dist-info/licenses/AUTHORS +2 -0
- pybada-0.1.0.dist-info/licenses/LICENCE.txt +287 -0
pyBADA/configuration.py
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pyBADA
|
|
4
|
+
Common configuration module
|
|
5
|
+
Developped @EUROCONTROL (EIH)
|
|
6
|
+
2024
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
__author__ = "Henrich Glaser-Opitz"
|
|
10
|
+
__copyright__ = "Copyright 2024, EUROCONTROL (EIH)"
|
|
11
|
+
__license__ = "BADA Eurocontrol"
|
|
12
|
+
__version__ = "1.0.0"
|
|
13
|
+
__maintainer__ = "Henrich Glaser-Opitz"
|
|
14
|
+
__email__ = "henrich.glaser-opitz@eurocontrol.int"
|
|
15
|
+
__status__ = "Development"
|
|
16
|
+
__docformat__ = "reStructuredText"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
import os
|
|
20
|
+
import sys
|
|
21
|
+
from pathlib import Path
|
|
22
|
+
import inspect
|
|
23
|
+
|
|
24
|
+
# get current and parent directory
|
|
25
|
+
currentDir = Path(os.path.dirname(os.path.realpath(__file__)))
|
|
26
|
+
parentDir = currentDir.parent
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def getVersionsList(badaFamily):
|
|
30
|
+
# list file and directories
|
|
31
|
+
path = getBadaFamilyPath(badaFamily)
|
|
32
|
+
items = os.listdir(path)
|
|
33
|
+
|
|
34
|
+
versionsList = []
|
|
35
|
+
for item in items:
|
|
36
|
+
if os.path.isdir(os.path.join(path, item)):
|
|
37
|
+
versionsList.append(item)
|
|
38
|
+
|
|
39
|
+
return versionsList
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def getAircraftList(badaFamily, badaVersion):
|
|
43
|
+
path = getBadaVersionPath(badaFamily, badaVersion)
|
|
44
|
+
|
|
45
|
+
if not os.path.exists(path):
|
|
46
|
+
return []
|
|
47
|
+
else:
|
|
48
|
+
items = os.listdir(path)
|
|
49
|
+
|
|
50
|
+
# check if I have BADA3 xml or standard ACSII files
|
|
51
|
+
xml = True
|
|
52
|
+
for item in items:
|
|
53
|
+
if "OPF" in item:
|
|
54
|
+
xml = False
|
|
55
|
+
break
|
|
56
|
+
|
|
57
|
+
if badaFamily == "BADA4" or badaFamily == "BADAH" or badaFamily == "BADAE" or xml:
|
|
58
|
+
aircraftList = []
|
|
59
|
+
for item in items:
|
|
60
|
+
if os.path.isdir(os.path.join(path, item)):
|
|
61
|
+
aircraftList.append(item)
|
|
62
|
+
|
|
63
|
+
elif badaFamily == "BADA3":
|
|
64
|
+
aircraftList = []
|
|
65
|
+
for item in items:
|
|
66
|
+
if len(item.split(".")) == 2:
|
|
67
|
+
if item.split(".")[0].rstrip("_") not in aircraftList and (
|
|
68
|
+
item.split(".")[1] == "PTD"
|
|
69
|
+
or item.split(".")[1] == "PTF"
|
|
70
|
+
or item.split(".")[1] == "OPF"
|
|
71
|
+
or item.split(".")[1] == "APF"
|
|
72
|
+
):
|
|
73
|
+
aircraftList.append(item.split(".")[0].rstrip("_"))
|
|
74
|
+
|
|
75
|
+
return aircraftList
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def getBadaFamilyPath(badaFamily):
|
|
79
|
+
path = os.path.join(getAircraftPath(), badaFamily)
|
|
80
|
+
return path
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def getBadaVersionPath(badaFamily, badaVersion):
|
|
84
|
+
path = os.path.join(getAircraftPath(), badaFamily, badaVersion)
|
|
85
|
+
return path
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def getAircraftPath():
|
|
89
|
+
# path = os.path.join(parentDir, "aircraft")
|
|
90
|
+
package_dir = os.path.dirname(__file__)
|
|
91
|
+
path = os.path.join(package_dir, "aircraft")
|
|
92
|
+
return path
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def getDataPath():
|
|
96
|
+
package_dir = os.path.dirname(__file__)
|
|
97
|
+
path = os.path.join(package_dir, "data")
|
|
98
|
+
return path
|
pyBADA/constants.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pyBADA
|
|
4
|
+
Common constants module
|
|
5
|
+
Developped @EUROCONTROL (EIH)
|
|
6
|
+
2024
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
__author__ = "Henrich Glaser-Opitz"
|
|
10
|
+
__copyright__ = "Copyright 2024, EUROCONTROL (EIH)"
|
|
11
|
+
__license__ = "BADA Eurocontrol"
|
|
12
|
+
__version__ = "1.0.0"
|
|
13
|
+
__maintainer__ = "Henrich Glaser-Opitz"
|
|
14
|
+
__email__ = "henrich.glaser-opitz@eurocontrol.int"
|
|
15
|
+
__status__ = "Development"
|
|
16
|
+
__docformat__ = "reStructuredText"
|
|
17
|
+
|
|
18
|
+
# Gravitational acceleration
|
|
19
|
+
g = 9.80665
|
|
20
|
+
|
|
21
|
+
# Real gas constant for air
|
|
22
|
+
R = 287.05287
|
|
23
|
+
|
|
24
|
+
# ISA temperature gradient with altitude below the tropopause
|
|
25
|
+
temp_h = 0.0065
|
|
26
|
+
|
|
27
|
+
# Standard atmospheric temperature at MSL
|
|
28
|
+
temp_0 = 288.15
|
|
29
|
+
|
|
30
|
+
# Standard atmospheric temperature at tropopause (11km)
|
|
31
|
+
temp_11 = 216.65
|
|
32
|
+
|
|
33
|
+
# Tropopause geopotatial pressure altitude [m]
|
|
34
|
+
h_11 = 11000.0
|
|
35
|
+
|
|
36
|
+
# Standard atmospheric pressure at tropopause (11km)
|
|
37
|
+
p_11 = 22632.04
|
|
38
|
+
|
|
39
|
+
# Standard atmospheric pressure at MSL
|
|
40
|
+
p_0 = 101325.0
|
|
41
|
+
|
|
42
|
+
# Standard atmospheric density at MSL
|
|
43
|
+
rho_0 = 1.225
|
|
44
|
+
|
|
45
|
+
# Speed of sound
|
|
46
|
+
a_0 = 340.294
|
|
47
|
+
|
|
48
|
+
# Adiabatic index of air
|
|
49
|
+
Agamma = 1.4
|
|
50
|
+
|
|
51
|
+
# Adiabatic index of air - ratio
|
|
52
|
+
Amu = (Agamma - 1) / Agamma
|
|
53
|
+
|
|
54
|
+
# Average Earth radius [km] - https://en.wikipedia.org/wiki/Earth_radius#Mean_radius
|
|
55
|
+
AVG_EARTH_RADIUS_KM = 6371
|
|
56
|
+
|
|
57
|
+
# semi-major axis (WGS-84) [m]
|
|
58
|
+
a = 6378137.0
|
|
59
|
+
|
|
60
|
+
# semi-minor axis (WGS-84) [m]
|
|
61
|
+
b = 6356752.314245
|
|
62
|
+
|
|
63
|
+
# flattening (WGS-84)
|
|
64
|
+
f = (a - b) / a
|
pyBADA/conversions.py
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
"""
|
|
3
|
+
pyBADA
|
|
4
|
+
Common unit conversions module
|
|
5
|
+
Developped @EUROCONTROL (EIH)
|
|
6
|
+
2024
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
__author__ = "Henrich Glaser-Opitz"
|
|
10
|
+
__copyright__ = "Copyright 2024, EUROCONTROL (EIH)"
|
|
11
|
+
__license__ = "BADA Eurocontrol"
|
|
12
|
+
__version__ = "1.0.0"
|
|
13
|
+
__maintainer__ = "Henrich Glaser-Opitz"
|
|
14
|
+
__email__ = "henrich.glaser-opitz@eurocontrol.int"
|
|
15
|
+
__status__ = "Development"
|
|
16
|
+
__docformat__ = "reStructuredText"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
from math import pi
|
|
20
|
+
from datetime import datetime
|
|
21
|
+
from time import mktime
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def ft2m(val):
|
|
25
|
+
"""
|
|
26
|
+
This function converts from ft to m s
|
|
27
|
+
|
|
28
|
+
:param val: value in ft
|
|
29
|
+
:returns: vaue in m
|
|
30
|
+
"""
|
|
31
|
+
return round(float(val) * 0.3048, 10)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def nm2m(val):
|
|
35
|
+
"""
|
|
36
|
+
This function converts from nautical miles to m
|
|
37
|
+
|
|
38
|
+
:param val: value in nautical miles
|
|
39
|
+
:returns: vaue in m
|
|
40
|
+
"""
|
|
41
|
+
return val * 1852.0
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def h2s(val):
|
|
45
|
+
"""
|
|
46
|
+
This function converts from hours to m seconds
|
|
47
|
+
|
|
48
|
+
:param val: value in hours
|
|
49
|
+
:returns: vaue in seconds
|
|
50
|
+
"""
|
|
51
|
+
return val * 3600.0
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def kt2ms(val):
|
|
55
|
+
"""
|
|
56
|
+
This function converts from kt to m s^-1
|
|
57
|
+
|
|
58
|
+
:param val: value in kt
|
|
59
|
+
:returns: vaue in m s^-1
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
if val is None:
|
|
63
|
+
return None
|
|
64
|
+
else:
|
|
65
|
+
return round(float(val) * 0.514444, 10)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def lb2kg(val):
|
|
69
|
+
"""
|
|
70
|
+
This function converts from lb to kg
|
|
71
|
+
|
|
72
|
+
:param val: value in lb
|
|
73
|
+
:returns: vaue in kg
|
|
74
|
+
"""
|
|
75
|
+
return val * 0.453592
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def deg2rad(val):
|
|
79
|
+
"""
|
|
80
|
+
This function converts from decimal degrees to radians
|
|
81
|
+
|
|
82
|
+
:param val: value in decimal degrees
|
|
83
|
+
:returns: vaue in radians
|
|
84
|
+
"""
|
|
85
|
+
return val * pi / 180.0
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def m2ft(val):
|
|
89
|
+
"""
|
|
90
|
+
This function converts from meters to feets
|
|
91
|
+
|
|
92
|
+
:param val: value in meters
|
|
93
|
+
:returns: value in feets
|
|
94
|
+
"""
|
|
95
|
+
|
|
96
|
+
return round(float(val) / 0.3048, 10)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def m2nm(val):
|
|
100
|
+
"""
|
|
101
|
+
This function converts from meters to nautical miles
|
|
102
|
+
|
|
103
|
+
:param val: value in meters
|
|
104
|
+
:returns: value in nautical miles
|
|
105
|
+
"""
|
|
106
|
+
return val / 1852.0
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def s2h(val):
|
|
110
|
+
"""
|
|
111
|
+
This function converts from seconds to hours
|
|
112
|
+
|
|
113
|
+
:param val: value in seconds
|
|
114
|
+
:returns: value in hours
|
|
115
|
+
"""
|
|
116
|
+
return val / 3600.0
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def ms2kt(val):
|
|
120
|
+
"""
|
|
121
|
+
This function converts from m s^-1 to kt
|
|
122
|
+
|
|
123
|
+
:param val: value in m s^-1
|
|
124
|
+
:returns: value in kt
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
if val is None:
|
|
128
|
+
return None
|
|
129
|
+
else:
|
|
130
|
+
return round(float(val) / 0.514444, 10)
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def kg2lb(val):
|
|
134
|
+
"""
|
|
135
|
+
This function converts from kg to lb
|
|
136
|
+
|
|
137
|
+
:param val: value in kg
|
|
138
|
+
:returns: value in lb
|
|
139
|
+
"""
|
|
140
|
+
return val / 0.453592
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def rad2deg(val):
|
|
144
|
+
"""
|
|
145
|
+
This function converts from radians to decimal degrees
|
|
146
|
+
|
|
147
|
+
:param val: value in radians
|
|
148
|
+
:returns: value in decimal degrees
|
|
149
|
+
"""
|
|
150
|
+
return val / pi * 180.0
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def hp2W(val):
|
|
154
|
+
"""
|
|
155
|
+
This function converts from horsepower to watts
|
|
156
|
+
|
|
157
|
+
:param val: value in horsepower
|
|
158
|
+
:returns: value in watts
|
|
159
|
+
"""
|
|
160
|
+
return val * 745.699872
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
def date2posix(val):
|
|
164
|
+
"""
|
|
165
|
+
This function converts a date format to posix
|
|
166
|
+
|
|
167
|
+
:param val: date in %Y-%m-%d %H:%M:%S format
|
|
168
|
+
:returns: posix time referenced to 01-01-1970 [s]
|
|
169
|
+
"""
|
|
170
|
+
return mktime(datetime.strptime(val, "%Y-%m-%d %H:%M:%S").timetuple())
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
def unix2date(val):
|
|
174
|
+
"""
|
|
175
|
+
This function converts posix to date format
|
|
176
|
+
|
|
177
|
+
:param val: time referenced to 01-01-1970 [s]
|
|
178
|
+
:returns: date in %Y-%m-%d %H:%M:%S format
|
|
179
|
+
"""
|
|
180
|
+
return datetime.fromtimestamp(int(val)).strftime("%Y-%m-%d %H:%M:%S")
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
convertFrom = {
|
|
184
|
+
"unix": unix2date,
|
|
185
|
+
"ft": ft2m,
|
|
186
|
+
"nm": nm2m,
|
|
187
|
+
"h": h2s,
|
|
188
|
+
"kt": kt2ms,
|
|
189
|
+
"lb": lb2kg,
|
|
190
|
+
"deg": deg2rad,
|
|
191
|
+
"date": date2posix,
|
|
192
|
+
"rad": rad2deg,
|
|
193
|
+
"ms": ms2kt,
|
|
194
|
+
"m": m2ft,
|
|
195
|
+
"kg": kg2lb,
|
|
196
|
+
"s": s2h,
|
|
197
|
+
}
|