Exemple #1
0
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!")
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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!")