Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
ChangChuntao committed Sep 19, 2022
1 parent 2fb845a commit b3523d2
Show file tree
Hide file tree
Showing 18 changed files with 282 additions and 237 deletions.
Binary file modified FAST_manual.pdf
Binary file not shown.
10 changes: 6 additions & 4 deletions FAST_src/ARG_Mode.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@
from Get_Ftp import ReplaceMMM


# 2022-03-27 : 输入参数模式主函数 by Chang Chuntao -> Version : 1.00
# 2022-04-12 : 新增P1C1、P1P2、P2C2、GRACE_SLR、BEIDOU_SLR、MGEX_WHU_OSB、GLO_IGL_sp3、GPS_IGS_clk_30s资源
# by Chang Chuntao -> Version : 1.10
def ARG_Mode(argument):
"""
2022-03-27 : 输入参数模式主函数 by Chang Chuntao -> Version : 1.00
2022-04-12 : 新增P1C1、P1P2、P2C2、GRACE_SLR、BEIDOU_SLR、MGEX_WHU_OSB、GLO_IGL_sp3、GPS_IGS_clk_30s资源
by Chang Chuntao -> Version : 1.10
"""
# PrintGDD("GDD 下载程序启动!", "important")
cddarg = {"datatype": "", "year": 0, "loc": "", "day1": 0, "day2": 0, "month": 0, "file": "", "process": 8,
cddarg = {"datatype": "", "year": 0, "loc": "", "day1": 0, "day2": 0, "month": 0, "file": "", "process": 4,
"site": "", "uncompress": "y"}
cddarg = GET_ARG(argument, cddarg) # 获取参数内容
ARG_ifwrong(cddarg) # 判断输入参数正确性
Expand Down
57 changes: 35 additions & 22 deletions FAST_src/ARG_Sub.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,24 @@
# ARG_Sub : Identify program arguments
# Author : Chang Chuntao
# Copyright(C) : The GNSS Center, Wuhan University & Chinese Academy of Surveying and mapping
# Latest Version : 1.11
# Latest Version : 1.21
# Creation Date : 2022.03.27 - Version 1.00
# Date : 2022.04.12 - Version 1.11
#
# 2022-04-22 : 新增TRO内资源IGS_zpd、COD_tro、 JPL_tro、 GRID_1x1_VMF3、 GRID_2.5x2_VMF1、 GRID_5x5_VMF3
# by Chang Chuntao -> Version : 1.11
# Date : 2022.09.16 - Version 1.21


import sys
from FAST_Print import PrintGDD
from Format import unzipfile
from GNSS_TYPE import isinGNSStype, getobj, objneedydqd2, objneedyd1d2loc
import getopt
from Get_Ftp import getftp, getSite
from Get_Ftp import getftp, getSite, replaceSiteStr
from help import Supported_Data, arg_options, arg_help


# 2022-03-27 : 获取输入参数 by Chang Chuntao -> Version : 1.00

def GET_ARG(argument, cddarg):
"""
2022-03-27 : 获取输入参数 by Chang Chuntao -> Version : 1.00
"""
try:
opts, args = getopt.getopt(argument, "hvt:l::y::o::e::d::m::f::p::u::",
["type=", "loc=", "year=", "day1=", "day2=", "day=", "month=", "file=", "process=",
Expand Down Expand Up @@ -64,8 +63,10 @@ def GET_ARG(argument, cddarg):
return cddarg


# 2022-03-27 : 判断输入参数正确性 by Chang Chuntao -> Version : 1.00
def ARG_ifwrong(cddarg): # 判断输入参数正确性
"""
2022-03-27 : 判断输入参数正确性 by Chang Chuntao -> Version : 1.00
"""
datatype = str(cddarg['datatype']).split(",")
for dt in datatype:
if isinGNSStype(dt): # 判断输入数据类型是否正确
Expand All @@ -77,12 +78,15 @@ def ARG_ifwrong(cddarg): # 判断输入参数正确性
else:
if obj + 1 in objneedydqd2: # 输入为年, 起始年积日, 终止年积日的数据类型, 判断输入时间是否正确
if cddarg['year'] == 0:
PrintGDD("本数据类型需输入年与天,请指定[-y <year>] [-o <day1>] [-e <day2>]或[-y <year>] [-d <day>]!", "fail")
PrintGDD(
"本数据类型需输入年与天,请指定[-y <year>] [-o <day1>] [-e <day2>]或[-y <year>] [-d <day>]!",
"fail")
sys.exit(2)
else:
if cddarg['day1'] == 0 and cddarg['day2'] == 0:
PrintGDD("本数据类型需输入年与天,请指定[-y <year>] [-o <day1>] [-e <day2>]或[-y <year>] [-d <day>]!",
"fail")
PrintGDD(
"本数据类型需输入年与天,请指定[-y <year>] [-o <day1>] [-e <day2>]或[-y <year>] [-d <day>]!",
"fail")
sys.exit(2)
if obj + 1 in objneedyd1d2loc:
if cddarg['file'] == "" and cddarg['site'] == "":
Expand All @@ -99,17 +103,22 @@ def ARG_ifwrong(cddarg): # 判断输入参数正确性
sys.exit(2)


# 2022.04.12 : 获取下载列表 by Chang Chuntao -> Version : 1.10
# 2022-04-22 : 新增TRO内资源IGS_zpd、COD_tro、 JPL_tro、 GRID_1x1_VMF3、 GRID_2.5x2_VMF1、 GRID_5x5_VMF3
# by Chang Chuntao -> Version : 1.11
def geturl(cddarg):
"""
2022.04.12 : 获取下载列表 by Chang Chuntao -> Version : 1.10
2022-04-22 : 新增TRO内资源IGS_zpd、COD_tro、 JPL_tro、 GRID_1x1_VMF3、 GRID_2.5x2_VMF1、 GRID_5x5_VMF3
by Chang Chuntao -> Version : 1.11
2022-09-16 : 新增站点字符串替换子程序
by Chang Chuntao -> Version : 1.21
"""
urllist = []
for dt in str(cddarg['datatype']).split(","):
typeurl = []
[obj, subnum] = getobj(dt)
PrintGDD("数据类型为:" + dt, "normal")
if obj + 1 in objneedydqd2 and dt != "IGS_zpd":
PrintGDD("下载时间为" + str(cddarg['year']) + "年,年积日" + str(cddarg['day1']) + "至" + str(cddarg['day2']) + "\n",
PrintGDD("下载时间为" + str(cddarg['year']) + "年,年积日" + str(cddarg['day1']) + "至" + str(
cddarg['day2']) + "\n",
"normal")
for day in range(cddarg['day1'], cddarg['day2'] + 1):
ftpsitelist = getftp(dt, cddarg['year'], day)
Expand All @@ -119,24 +128,28 @@ def geturl(cddarg):
typeurl.append(url)

elif obj + 1 in objneedyd1d2loc or dt == "IGS_zpd":
PrintGDD("下载时间为" + str(cddarg['year']) + "年,年积日" + str(cddarg['day1']) + "至" + str(cddarg['day2']) + "\n",
PrintGDD("下载时间为" + str(cddarg['year']) + "年,年积日" + str(cddarg['day1']) + "至" + str(
cddarg['day2']) + "\n",
"normal")
print("")
cddarg['site'] = getSite(cddarg['file'], dt)
for day in range(cddarg['day1'], cddarg['day2'] + 1):
ftpsitelist = getftp(dt, cddarg['year'], day)
for s in cddarg['site']:
for siteInList in cddarg['site']:
siteftp = []
for f in ftpsitelist:
f = f.replace('<SITE>', s)
siteftp.append(f)
for ftpInList in ftpsitelist:
ftpInList = replaceSiteStr(ftpInList, siteInList)
# f = f.replace('<SITE>', siteInList)
siteftp.append(ftpInList)
typeurl.append(siteftp) # 按天下载
urllist.append(typeurl)
return urllist


# 2022.04.12 : 传入需解压的文件至unzipfile by Chang Chuntao -> Version : 1.10
def uncompress_arg(path, urllist):
"""
2022.04.12 : 传入需解压的文件至unzipfile by Chang Chuntao -> Version : 1.10
"""
ftpsite = []
for a1 in urllist:
for a2 in a1:
Expand Down
12 changes: 7 additions & 5 deletions FAST_src/CDD_Mode.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@
from GNSS_TYPE import gnss_type


# 2022-03-27 : 引导模式主函数 by Chang Chuntao -> Version : 1.00
# 2022-04-12 : *新增返回上级菜单操作,输入y回到上级菜单
# by Chang Chuntao -> Version : 1.10
# 2022-04-22 : 新增TRO内资源IGS_zpd、COD_tro、 JPL_tro、 GRID_1x1_VMF3、 GRID_2.5x2_VMF3、 GRID_5x5_VMF3
# by Chang Chuntao -> Version : 1.11
def CDD_Mode():
"""
2022-03-27 : 引导模式主函数 by Chang Chuntao -> Version : 1.00
2022-04-12 : *新增返回上级菜单操作,输入y回到上级菜单
by Chang Chuntao -> Version : 1.10
2022-04-22 : 新增TRO内资源IGS_zpd、COD_tro、 JPL_tro、 GRID_1x1_VMF3、 GRID_2.5x2_VMF3、 GRID_5x5_VMF3
by Chang Chuntao -> Version : 1.11
"""
fastSoftwareInformation()
obj = top_cdd() # 一级目录 obj:一级索引
subnum = sub_cdd(obj) # 二级目录 subnum:二级索引 返回y为返回上级一级菜单,或返回二级菜单
Expand Down
41 changes: 21 additions & 20 deletions FAST_src/CDD_Sub.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,35 @@
# CDD_Sub : Get user input
# Author : Chang Chuntao
# Copyright(C) : The GNSS Center, Wuhan University & Chinese Academy of Surveying and mapping
# Latest Version : 1.19
# Latest Version : 1.21
# Creation Date : 2022.03.27 - Version 1.00
# Date : 2022.08.04 - Version 1.19
# Date : 2022.09.16 - Version 1.21

import os
from GNSS_Timestran import gnssTimesTran
from Format import *
from help import *
from Dowload import *
from FTP_Source import FTP_S
from FAST_Print import *
from GNSS_TYPE import *
from Get_Ftp import *


# 2022-03-27 : 一级菜单 by Chang Chuntao -> Version : 1.00
# 2022-04-22 : 新增TRO内资源IGS_zpd、COD_tro、 JPL_tro、 GRID_1x1_VMF3、 GRID_2.5x2_VMF1、 GRID_5x5_VMF3
# by Chang Chuntao -> Version : 1.11
# 2022-04-30 : * 新增GNSS日常使用工具:GNSS_Timestran
# 调整输入模式, 0 -> a -> HELP / b -> GNSS_Timestran,增加分栏
# by Chang Chuntao -> Version : 1.12
# 2022-05-24 : + 新增ION内资源WURG_ion、CODG_ion、CORG_ion、UQRG_ion、UPRG_ion、JPLG_ion、JPRG_ion、CASG_ion、
# CARG_ion、ESAG_ion、ESRG_ion
# by Chang Chuntao -> Version : 1.13
# 2022-07-13 : + 新增SpaceData一级类
# + 新增SpaceData内资源SW_EOP
# by Chang Chuntao -> Version : 1.16

def top_cdd():
"""
2022-03-27 : 一级菜单 by Chang Chuntao -> Version : 1.00
2022-04-22 : 新增TRO内资源IGS_zpd、COD_tro、 JPL_tro、 GRID_1x1_VMF3、 GRID_2.5x2_VMF1、 GRID_5x5_VMF3
by Chang Chuntao -> Version : 1.11
2022-04-30 : * 新增GNSS日常使用工具:GNSS_Timestran
调整输入模式, 0 -> a -> HELP / b -> GNSS_Timestran,增加分栏
by Chang Chuntao -> Version : 1.12
2022-05-24 : + 新增ION内资源WURG_ion、CODG_ion、CORG_ion、UQRG_ion、UPRG_ion、JPLG_ion、JPRG_ion、CASG_ion、
CARG_ion、ESAG_ion、ESRG_ion
by Chang Chuntao -> Version : 1.13
2022-07-13 : + 新增SpaceData一级类
+ 新增SpaceData内资源SW_EOP
by Chang Chuntao -> Version : 1.16
"""
print("")
print(" ----------------------------------FAST--------------------------------------")
print(" | |")
Expand Down Expand Up @@ -459,11 +459,12 @@ def geturl_download_uncompress(cddarg, obj):
elif obj in objneedloc: # 输入为站点文件 的数据类型
cddarg['site'] = getFile(cddarg['datatype'])
ftpsite = FTP_S[cddarg['datatype']]
for s in cddarg['site']:
for siteInList in cddarg['site']:
siteftp = []
for ftp in ftpsite:
f = ftp.replace('<SITE>', s)
siteftp.append(f)
for ftpInList in ftpsite:
ftpInList = replaceSiteStr(ftpInList, siteInList)
# ftpInList = ftpInList.replace('<SITE>', siteInList)
siteftp.append(ftpInList)
urllist.append(siteftp) # 按天下载
cddpooldownload(urllist, 3) # 多线程下载
uncompress(urllist)
Expand Down
11 changes: 7 additions & 4 deletions FAST_src/Dowload.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,24 @@
from FAST_Print import PrintGDD
from Format import isinpath

# 2022-03-27 : 判断操作平台,获取bin下下载程序 by Chang Chuntao -> Version : 1.00
# 2022-09-16 : 更新索引位置 by Chang Chuntao -> Version : 1.21

if platform.system() == 'Windows':
"""
2022-03-27 : 判断操作平台,获取bin下下载程序 by Chang Chuntao -> Version : 1.00
2022-09-16 : 更新索引位置 by Chang Chuntao -> Version : 1.21
"""
dirname = os.path.split(os.path.abspath(sys.argv[0]))[0]
PrintGDD('当前为Windows系统', "important")
wget = os.path.join(dirname, 'bin', 'wget.exe')
lftp = os.path.join(dirname, 'bin', 'lftp')
wget += " -T 3 -t 1 "
wget += " -T 3 -t 10 "
lftp += ' '
else:
PrintGDD('当前为Linux系统', "important")
dirname = os.path.split(os.path.abspath(sys.argv[0]))[0]
wget = os.path.join(dirname, 'bin', 'wget')
lftp = os.path.join(dirname, 'bin', 'lftp')
wget += " -T 3 -t 1 "
wget += " -T 3 -t 10 "
lftp += ' '


Expand Down
3 changes: 2 additions & 1 deletion FAST_src/FAST.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,10 @@ def FAST():
Version 1.20 : > 修正广播星历文件判定
+ 站点文件可支持行列两种格式,或混合模式
by Chang Chuntao # 2022-09-09
Version 1.21 : + 新增RINEX内MGEX_HK_cors
新增替换站点字符串子函数Get_Ftp -> replaceSiteStr
by Chang Chuntao -> Version : 1.21
by Chang Chuntao # 2022-09-16
"""
import sys
from ARG_Mode import ARG_Mode
Expand Down
2 changes: 1 addition & 1 deletion FAST_src/FTP_Source.py
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@

"IGS_week_snx": ["--ftp-user anonymous --ftp-password [email protected] "
"ftp://igs.gnsswhu.cn/pub/gps/products/<GPSW>/igs<YY>P<GPSW>.snx.Z",
"--ftp-user anonymous --ftp-password [email protected]"
"--ftp-user anonymous --ftp-password [email protected] "
"ftps://gdc.cddis.eosdis.nasa.gov/gps/products/<GPSW>/igs<YY>P<GPSW>.snx.Z"],

"IVS_week_snx": ['-d -e "set ftp:ssl-force true" -e "mget /pub/vlbi/ivsproducts/daily_sinex/ivs2020a/'
Expand Down
46 changes: 23 additions & 23 deletions FAST_src/Format.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@
from GNSS_Timestran import gnssTime2datetime, datetime2GnssTime


# 2022-03-27 : 判断文件在本地是否存在 by Chang Chuntao -> Version : 1.00
# 2022-09-09 : > 修正广播星历文件判定
# by Chang Chuntao -> Version : 1.20
def isinpath(file): # 判断相关文件是否存在
"""
2022-03-27 : 判断文件在本地是否存在 by Chang Chuntao -> Version : 1.00
2022-09-09 : > 修正广播星历文件判定
by Chang Chuntao -> Version : 1.20
"""
orifile = str(file).split(".")[0]
if len(orifile) > 9:
filelowo = file.lower()[0:4] + file.lower()[16:20] + "." + file.lower()[14:16] + "o"
Expand Down Expand Up @@ -80,29 +82,37 @@ def isinpath(file): # 判断相关文件是否存在
unzip = 'uncompress '


# 2022-03-27 : 解压单个文件 by Chang Chuntao -> Version : 1.00
def uncompresss(file):
"""
2022-03-27 : 解压单个文件 by Chang Chuntao -> Version : 1.00
"""
if file.split(".")[-1] == "Z" or file.split(".")[-1] == "gz":
cmd = unzip + file
os.system(cmd)


# 2022-03-27 : crx2rnx by Chang Chuntao -> Version : 1.00
def crx2rnxs(file):
"""
2022-03-27 : crx2rnx by Chang Chuntao -> Version : 1.00
"""
if file[-3:-1].isdigit() and file[-1] == "d":
cmd = crx2rnx + file
os.system(cmd)


# 2022-03-27 : crx更名为d by Chang Chuntao -> Version : 1.00
def crx2d(file):
"""
2022-03-27 : crx更名为d by Chang Chuntao -> Version : 1.00
"""
if file.split(".")[-1] == "crx":
filelow = file.lower()[0:4] + file.lower()[16:20] + "." + file.lower()[14:16] + "d"
os.rename(file, filelow)


# 2022-03-27 : BRDM长名更名为brdm短名 by Chang Chuntao -> Version : 1.00
def renamebrdm(file):
"""
2022-03-27 : BRDM长名更名为brdm短名 by Chang Chuntao -> Version : 1.00
"""
if file.split(".")[-1] == "rnx" and file[0:4] == "BRDM":
filelow = file.lower()[0:4] + file.lower()[16:20] + "." + file.lower()[14:16] + "p"
os.rename(file, filelow)
Expand All @@ -111,22 +121,10 @@ def renamebrdm(file):
os.rename(file, filelow)


#
def renamesp3(file):
if file.split(".")[-1] == "SP3":
if file.split("_")[0] == "WUM0MGXULA":
pass
else:
year = file.lower()[11:15]
doy = file.lower()[15:18]
specTime = gnssTime2datetime(year + " " + doy, "YearDoy")
[YearMonthDay, GPSWeekDay, YearDoy, MjdSod] = datetime2GnssTime(specTime)
filelow = file.lower()[0:3] + str(GPSWeekDay[0]) + str(GPSWeekDay[1]) + ".sp3"
os.rename(file, filelow)


# 2022-03-27 : 解压vlbi文件 by Chang Chuntao -> Version : 1.00
def unzip_vlbi(path, ftpsite):
"""
2022-03-27 : 解压vlbi文件 by Chang Chuntao -> Version : 1.00
"""
nowdir = os.getcwd()
if len(path) == 0:
path = os.getcwd()
Expand All @@ -138,8 +136,10 @@ def unzip_vlbi(path, ftpsite):
uncompresss(filename)


# 2022.04.12 : 通过下载列表解压相应文件 by Chang Chuntao -> Version : 1.10
def unzipfile(path, ftpsite):
"""
2022.04.12 : 通过下载列表解压相应文件 by Chang Chuntao -> Version : 1.10
"""
nowdir = os.getcwd()
if len(path) == 0:
path = os.getcwd()
Expand Down
Loading

0 comments on commit b3523d2

Please sign in to comment.