def get_rinex(stationList, date_start, date_finish=None, period='day', Datetime=False, directory=os.getcwd()): """ This function downloads IGS rinex observation file from NASA CDDIS ftp server. Usage: get_rinex(['mate'],'02-01-2017') get_rinex(['mate', 'onsa'],'01-01-2017') get_rinex(['mate'], date_start = '01-01-2017', date_finish = '05-01-2017', period = 'day') get_rinex(['mate'], date_start = '01-01-2017', date_finish = '01-06-2017', period = 'month') get_rinex(['mate', 'onsa'], date_start = '01-01-2017', date_finish = '03-01-2017', period = 'month') get_rinex(['mate'], date_start = '01-01-2017', date_finish = '01-01-2018', period = 'year') """ internet = check_internet() if internet == False: raise Warning('No internet connection! | Cannot download RINEX file...') if Datetime == False: date_start = datetime.date(year = int(date_start[-4:]), month = int(date_start[-7:-5]), day = int(date_start[-10:-8])) if date_finish != None: date_finish = datetime.date(year = int(date_finish[-4:]), month = int(date_finish[-7:-5]), day = int(date_finish[-10:-8])) timedelta = {'day' : relativedelta(days = 1), 'month' : relativedelta(months = 1), 'year' : relativedelta(years = 1)}[period] dateList = [date_start] # dates of observation files if date_finish != None: while dateList[-1] != date_finish: date = dateList[-1] + timedelta dateList.append(date) ftpserver = 'ftp://cddis.gsfc.nasa.gov' obsFileDir = 'gnss/data/daily' # observation file directory in ftp server for stationName in stationList: for date in dateList: doy = datetime2doy(date, string = True) fileName = obsFileName(stationName, date, zipped = True) # check if the file already exist in the directory if os.path.exists(fileName) == True: if os.path.exists(fileName[:-2]) == True: print(fileName[:-2] + " exists in working directory") continue else: print(fileName + " exists in working directory | Extracting...") Archive(fileName).extractall(os.getcwd()) continue file_topath = os.path.join(directory, fileName) fileDir = [ftpserver, obsFileDir, str(date.year), doy, str(date.year)[-2:] + 'o', fileName] # file directory ftp = '/'.join(fileDir) # Download the file try: print('Downloading:', fileName, end= '') url.urlretrieve(ftp, file_topath) print(" | Download completed for", fileName, " | Extracting...") Archive(fileName).extractall(os.getcwd()) except: raise Warning("Requested file", fileName, "cannot be not found!")
def obs3FileName(stationName, date, zipped=False): doy = datetime2doy(date, string=True) # for RINEX data names siteInfo = IGS(stationName) rinexFile = siteInfo.SITE[0] + "_R_" + str( date.year) + str(doy) + "0000_01D_30S_MO.crx" if zipped == True: rinexFile = rinexFile + ".gz" return rinexFile
def obsFileName(stationName, date, zipped=False): doy = datetime2doy(date, string=True) if len(doy) == 1: rinexFile = stationName + doy + "0." + str(date.year)[-2:] + "o" elif len(doy) == 2: rinexFile = stationName + doy + "0." + str(date.year)[-2:] + "o" else: rinexFile = stationName + doy + "0." + str(date.year)[-2:] + "o" if zipped == True: rinexFile = rinexFile + ".Z" return rinexFile
def ionFileName(date, product="igs", zipped=False): doy = datetime2doy(date, string=True) if len(doy) == 1: ionFile = product + "g" + doy + "0." + str(date.year)[-2:] + "i" elif len(doy) == 2: ionFile = product + "g" + doy + "0." + str(date.year)[-2:] + "i" else: ionFile = product + "g" + doy + "0." + str(date.year)[-2:] + "i" if zipped == True: ionFile = ionFile + ".Z" return ionFile
def nav3FileName(stationName, date, zipped=False): doy = datetime2doy(date, string=True) # for RINEX data names siteInfo = IGS(stationName) if stationName.upper() == "BRDC": rinexFile = "BRDC00IGS_R_" + str( date.year) + str(doy) + "0000_01D_MN.rnx" else: rinexFile = siteInfo.SITE[0] + "_R_" + str( date.year) + str(doy) + "0000_01D_MN.rnx" """ if len(doy) == 1: rinexFile = stationName + doy + "0." + str(date.year)[-2:] + "p" elif len(doy) == 2: rinexFile = stationName + doy + "0." + str(date.year)[-2:] + "p" else: rinexFile = stationName + doy + "0." + str(date.year)[-2:] + "p" """ if zipped == True: rinexFile = rinexFile + ".gz" return rinexFile
def get_navigation(stationList, date_start, date_finish=None, period='day', Datetime=False, directory=os.getcwd()): """ This function downloads mutli-gnss navigation file (.p) from NASA CDDIS ftp server. Usage: get_navigation(['mate'],'02-01-2017') get_navigation(['mate', 'onsa'],'01-01-2017') get_navigation(['mate'], date_start = '01-01-2017', date_finish = '05-01-2017', period = 'day') get_navigation(['mate'], date_start = '01-01-2017', date_finish = '01-06-2017', period = 'month') get_navigation(['mate', 'onsa'], date_start = '01-01-2017', date_finish = '03-01-2017', period = 'month') get_navigation(['mate'], date_start = '01-01-2017', date_finish = '01-01-2018', period = 'year') """ internet = check_internet() if internet == False: raise Warning('No internet connection! | Cannot download rinex file') if Datetime == False: date_start = datetime.date(year = int(date_start[-4:]), month = int(date_start[-7:-5]), day = int(date_start[-10:-8])) if date_finish != None: date_finish = datetime.date(year = int(date_finish[-4:]), month = int(date_finish[-7:-5]), day = int(date_finish[-10:-8])) timedelta = {'day' : relativedelta(days = 1), 'month' : relativedelta(months = 1), 'year' : relativedelta(years = 1)}[period] dateList = [date_start] if date_finish != None: while dateList[-1] != date_finish: date = dateList[-1] + timedelta dateList.append(date) ftpserver = 'ftp://cddis.gsfc.nasa.gov' obsFileDir = 'gnss/data/daily' for stationName in stationList: for date in dateList: if date >= datetime.date(year=2016,month=1,day=1): print("Downloading RINEX3 navigation file...") doy = datetime2doy(date, string = True) fileName = nav3FileName(stationName, date, zipped = True) if os.path.exists(fileName) == True: if os.path.exists(fileName[:-2]) == True: print(fileName[:-2] + " exists in working directory") continue else: print(fileName + " exists in working directory | Extracting...") Archive(fileName).extractall(os.getcwd()) continue file_topath = os.path.join(directory, fileName) fileDir = [ftpserver, obsFileDir, str(date.year), doy, str(date.year)[-2:] + 'p', fileName] ftp = '/'.join(fileDir) try: print('Downloading:', fileName, end= '') url.urlretrieve(ftp, file_topath) print(" | Download completed for", fileName, " | Extracting...") Archive(fileName).extractall(os.getcwd()) except: print("| Requested navigation file", fileName, "cannot be not found! | Checking for IGS Navigation File..." ) try: igsFileName = nav3FileName("BRDC", date, zipped = True) if os.path.exists(igsFileName) == True: if os.path.exists(igsFileName[:-3]) == True: print(igsFileName[:-3] + " exists in working directory") continue else: print(igsFileName + " exists in working directory | Extracting...") Archive(igsFileName).extractall(os.getcwd()) continue file_topath = os.path.join(directory, igsFileName) fileDir = [ftpserver, obsFileDir, str(date.year), doy, str(date.year)[-2:] + 'p', igsFileName] ftp = '/'.join(fileDir) print('Downloading:', igsFileName, end= '') url.urlretrieve(ftp, file_topath) print(" | Download completed for", igsFileName, " | Extracting...") Archive(igsFileName).extractall(os.getcwd()) except: raise Warning("IGS Navigation File", igsFileName, "cannot be not found!") else: print("Downloading RINEX2 navigation file...") doy = datetime2doy(date, string = True) fileName = navFileName(stationName, date, zipped = True) if os.path.exists(fileName) == True: if os.path.exists(fileName[:-2]) == True: print(fileName[:-2] + " exists in working directory") continue else: print(fileName + " exists in working directory | Extracting...") Archive(fileName).extractall(os.getcwd()) continue file_topath = os.path.join(directory, fileName) fileDir = [ftpserver, obsFileDir, str(date.year), doy, str(date.year)[-2:] + 'n', fileName] ftp = '/'.join(fileDir) # FTP link of file try: print('Downloading:', fileName, end= '') url.urlretrieve(ftp, file_topath) print(" | Download completed for", fileName, " | Extracting...") Archive(fileName).extractall(os.getcwd()) except: print("| Requested navigation file", fileName, "cannot be not found! | Checking for IGS Navigation File..." ) try: igsFileName = navFileName("brdc", date, zipped = True) if os.path.exists(igsFileName) == True: if os.path.exists(igsFileName[:-2]) == True: print(fileName[:-2] + " exists in working directory") continue else: print(igsFileName + " exists in working directory | Extracting...") Archive(igsFileName).extractall(os.getcwd()) continue file_topath = os.path.join(directory, igsFileName) fileDir = [ftpserver, obsFileDir, str(date.year), doy, str(date.year)[-2:] + 'n', igsFileName] ftp = '/'.join(fileDir) print('Downloading:', igsFileName, end= '') url.urlretrieve(ftp, file_topath) print(" | Download completed for", igsFileName, " | Extracting...") Archive(igsFileName).extractall(os.getcwd()) except: raise Warning("IGS Navigation File", igsFileName, "cannot be not found!")