In [1]:
from netCDF4 import Dataset
from datetime import datetime as dt
import numpy as np

In [6]:
# Enter the start and end time of your analysis period
# Use a format of 'YYYYMMDD_HHMMSS'
strtTime = '20150620_075454'
endTime = '20150620_075807'

# Enter the full file path of your flight-level file (NOAA-HRD netCDF format)
flFile = '/Users/danstechman/GoogleDrive/PECAN-Data/FlightLevelData/20150620I1_AXC.nc'

In [7]:
def timeCalc(strtTime,endTime):
    dtStrt = dt.strptime(strtTime,'%Y%m%d_%H%M%S')
    dtEnd = dt.strptime(endTime,'%Y%m%d_%H%M%S')

    timeDiff = dtEnd - dtStrt
    originT = timeDiff/2
    originTfull = dtStrt+originT

    return timeDiff,originT,originTfull

In [8]:
def latLonOrigin(originTsecMidnt,flFile):
    flData = Dataset(flFile,'r')
    flLat = flData.variables['LatGPS.3'][:].filled()
    flLon = flData.variables['LonGPS.3'][:].filled()
    flHH = flData.variables['HH'][:]
    flMM = flData.variables['MM'][:]
    flSS = flData.variables['SS'][:]
    flSecs = flHH*3600 + flMM*60 + flSS
    
    matchIx = np.where(flSecs == originTsecMidnt)
    
    latOrigin = flLat[matchIx][0]
    lonOrigin = flLon[matchIx][0]
    
    return latOrigin, lonOrigin

In [9]:
timeDiff,originT,originTfull = timeCalc(strtTime,endTime)
originTsecMidnt = int((originTfull - originTfull.replace(hour=0, minute=0, second=0)).total_seconds())

latOrigin,lonOrigin = latLonOrigin(originTsecMidnt,flFile)

print( 'Duration of linear track: {} sec'.format(int(timeDiff.total_seconds())))
print( 'Origin time (mid-point) of linear track: {} sec'.format(int(originT.total_seconds())))
print( 'Reference time: {:%H:%M:%S}'.format(originTfull))
print( '\nLatitude at origin time: {:.4f}'.format(latOrigin))
print( 'Longitude at origin time: {:.4f}'.format(lonOrigin))


Duration of linear track: 193 sec
Origin time (mid-point) of linear track: 96 sec
Reference time: 07:56:30

Latitude at origin time: 43.9247
Longitude at origin time: -98.0561