forked from Dream-t/GNSSdatadownload
-
Notifications
You must be signed in to change notification settings - Fork 0
/
timeCov.py
129 lines (117 loc) · 3.14 KB
/
timeCov.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
## function for time convert and class switch
##
##
## verification by http://www.gnsscalendar.com/index.html?year=2019
## written by tmx 2020/11/17 10:01
##############################################
##-------------------------------------------
## 年月日转为约化儒略日,没有考虑小时和分钟
##
## input:
## year 4-digit
## mon 2-digit
## day 2-digit
##
## return:
## mjd (int)
## ref:
# 李征航.GPS测量数据处理 P29 公式2
##--------------------------------------------
def ymd2mjd(year,mon,day):
if mon<=2:
mon=mon+12
year=year-1
mjd=int(365.25*year)+int(30.6001*(mon+1))+day+1720981.5-2400000.5
return int(mjd)
##-------------------------------------------
## 年月日转为GPS周和周内天,没有考虑小时和分钟
##
## input:
## year 4-digit
## mon 2-digit
## day 2-digit
##
## return:
## week (int)
## dow (int)
## ref:
# none
##--------------------------------------------
def ymd2wkdow(year,mon,day):
GPS_year=1980
GPS_mon=1
GPS_day=6
GPS_mjd=ymd2mjd(GPS_year,GPS_mon,GPS_day)
cur_mjd=ymd2mjd(year,mon,day)
dmjd=cur_mjd-GPS_mjd
week=int(dmjd/7)
dow=dmjd%7
return week,dow
##-------------------------------------------
## 约化儒略日转换为年、年积日,没有考虑小时和分钟
##
## input:
## mjd (int)
##
## return:
## year (int)
## doy (int)
## ref:
# 李征航.GPS测量数据处理 P29
##--------------------------------------------
def mjd2ydoy(mjd):
jd=mjd+2400000.5
a=int(jd+0.5)
b=a+1537
c=int((b-122.1)/365.25)
d=int(365.25*c)
e=int((b-d)/30.600)
M=e-1-12*int(e/14)
Y=c-4715-int((7+M)/10)
mjd0=ymd2mjd(Y,1,1)
doy=mjd-mjd0+1
return Y,doy
##-------------------------------------------
## 约化儒略日转换为年、月、日,没有考虑小时和分钟
##
## input:
## mjd (int)
##
## return:
## year (int)
## mon (int)
## day (int)
## ref:
# 李征航.GPS测量数据处理 P29
##--------------------------------------------
def mjd2ymd(mjd):
jd=mjd+2400000.5
a=int(jd+0.5)
b=a+1537
c=int((b-122.1)/365.25)
d=int(365.25*c)
e=int((b-d)/30.600)
D=b-d-int(30.6001*e)+0
M=e-1-12*int(e/14)
Y=c-4715-int((7+M)/10)
return Y,M,D
# This class provides the functionality we want. You only need to look at
# this if you want to know how this works. It only needs to be defined
# once, no need to muck around with its internals.
class switch(object):
def __init__(self, value):
self.value = value
self.fall = False
def __iter__(self):
"""Return the match method once, then stop"""
yield self.match
raise StopIteration
def match(self, *args):
"""Indicate whether or not to enter a case suite"""
if self.fall or not args:
return True
elif self.value in args: # changed for v1.5, see below
self.fall = True
return True
else:
return False