print 'tiff lims y:', np.amin(yT), np.amax(yT) print 'ATM lims x:', np.amin(x), np.amax(x) print 'ATM lims y:', np.amin(y), np.amax(y) #-------------------------------------------------- #-------------- MASK ELEVATION AND X/Y ------------------ elevation_maL = ma.masked_where((x < np.amin(xT)) | (x > np.amax(xT)) | (y < np.amin(yT)) | (y > np.amax(yT)), elevation) elevation_ma = ma.compressed(elevation_maL) mask = ma.getmask(elevation_maL) indexT = np.where(mask == False) xatm = x[indexT] yatm = y[indexT] #-------------------------------------------------- level_elev, level_elevl, level_elevu, min_index, thresh = ro.calc_level_ice( elevation_ma, pint, pwidth, min_ridge_height, lev_bounds=1) #thresh = level_elev+min_ridge_height hist, bins = histogram(elevation_ma, bins=100, density=True) #PLOT OUT PROB DISTRIBUTION FOR CHECKING #plot_probdist() #-------------- CREATE 2D ATM GIRD ------------------ print 'GRID ATM...' xx = np.arange(np.amin(xT), np.amax(xT), xy_res) yy = np.arange(np.amin(yT), np.amax(yT), xy_res) xx2d, yy2d = meshgrid(xx, yy) elevation2d, elevation2d_ridge_ma, ridge_area = ro.grid_elevation(xatm, yatm,
#-------------- CHECK BOUNDS OF ATM/DMS ---------------- print 'tiff lims x:', np.amin(xT),np.amax(xT) print 'tiff lims y:', np.amin(yT),np.amax(yT) print 'ATM lims x:', np.amin(x),np.amax(x) print 'ATM lims y:', np.amin(y),np.amax(y) #-------------------------------------------------- #-------------- MASK ELEVATION AND X/Y ------------------ elevation_maL = ma.masked_where((x<np.amin(xT)) | (x>np.amax(xT)) | (y<np.amin(yT)) | (y>np.amax(yT)), elevation) elevation_ma = ma.compressed(elevation_maL) mask = ma.getmask(elevation_maL) indexT = np.where(mask==False) xatm = x[indexT] yatm = y[indexT] #-------------------------------------------------- level_elev, level_elevl, level_elevu, min_index, thresh = ro.calc_level_ice(elevation_ma, pint, pwidth, min_ridge_height, lev_bounds=1) #thresh = level_elev+min_ridge_height hist, bins = histogram(elevation_ma, bins=100, density=True) #PLOT OUT PROB DISTRIBUTION FOR CHECKING #plot_probdist() #-------------- CREATE 2D ATM GIRD ------------------ print 'GRID ATM...' xx = np.arange(np.amin(xT),np.amax(xT), xy_res) yy = np.arange(np.amin(yT),np.amax(yT), xy_res) xx2d, yy2d = meshgrid(xx, yy) elevation2d, elevation2d_ridge_ma, ridge_area = ro.grid_elevation(xatm, yatm,elevation_ma, xx2d, yy2d, thresh,kdtree=1) found_ridges=0
print 'Mean vel:', mean_vel if (abs(mean_alt - 500) < 200) & (abs(mean_pitch) < 5) & (abs(mean_roll) < 5): plane_good = 1 poly_path, vertices, sides = ro.get_pos_poly( xp, yp, km_idxs[i], km_idxs[i + 1]) xatm_km, yatm_km, elevation_km, azi_km = ro.get_atm_poly_azi( xT, yT, elevationT, aziT, km_utc_times, utc_timeT, poly_path, i) num_pts_section = size(xatm_km) print 'Num pts in section:', size(xatm_km) #if there are more than 15000 pts in the 1km grid (average of around 20000) then proceed if (num_pts_section > pts_threshold): points_good = 1 level_elev, thresh, levpercent = ro.calc_level_ice( elevation_km, pint, pwidth, min_ridge_height) elevation_km = elevation_km - level_elev thresh = thresh - level_elev if (azi1 > 300): mask_km = where((azi_km > azi1) | (azi_km < azi2)) else: mask_km = where((azi_km > azi1) | (azi_km < azi2)) if (size(mask_km) > 100): #MASK IF WEIRDLY DOESN'T HAVE ATM POINTS ON THE SIDE. THINK ABOUT THIS NUMBER MORE! xatm1D1, yatm1D1, elevation1D1, xatm2m, yatm2m, odist2m, elevS2m, tptsN, tpts, dist_diffs = ro.atm_analysis_1D( xatm_km, yatm_km, azi_km, elevation_km, min_ridge_height,
xatm_km, yatm_km, elevation_km = ro.get_atm_poly(xT, yT, elevationT, km_utc_times, utc_timeT, poly_path, i) num_pts_section = size(xatm_km) print 'Num pts in section:', size(xatm_km) #if there are more than 15000 pts in the 1km grid (average of around 20000) then proceed if (num_pts_section>pts_threshold): points_good=1 #ro.plot_atm_poly(m, xatm_km, yatm_km, elevation_km, poly_path, i, out_path, year) #GET ATM GRID xx2d, yy2d = ro.grid_atm(xatm_km, yatm_km, xy_res) print 'Grid:', size(xx2d[0]), size(xx2d[1]) # CALCULATE THE LEVEL ICE SURFACE USING THE CUMULATIVE DISTRIBUTION #THRESH IS THE LEVEL ICE PLUS RIDGED ICE ELEVATION level_elev, thresh, levpercent = ro.calc_level_ice(elevation_km, pint, pwidth, min_ridge_height) #level_elev, thresh, levpercent = ro.calc_level_ice(elevation_km, pwidth, min_ridge_height) elevation2d, elevation2d_ridge_ma, ridge_area = ro.grid_elevation(xatm_km, yatm_km,elevation_km, xx2d, yy2d, thresh, kdtree=1) elevation2d_ridge_maL =elevation2d_ridge_ma-level_elev #IF THERE IS EVEN A LITTLE BIT OF RIDGING (might not actually be enough for a big areal ridge from the labelling) then proceed to clean up data. if (ridge_area>0): found_ridges=1 #CLEAN UP DATA WITH KDTREE AROUND RIDGE POINTS #REMOVE FOR PRELIMINARY STUDIES AS COMPUTATIONALLY EXPENSIVE! #elevation2d_ridge_ma = kdtree_clean() #GET RIDGE LABELS - MAKE SURE RIDGES ARE ABOVE CERTAIN SIZE, DECIDED BY NUM_PTS_REQ label_im = ro.get_labels(elevation2d_ridge_maL, xy_res, min_ridge_size, min_ridge_height) # DECIDE IF WE WANT TO CALCULATE RIDGE ORIENTATION OR NOT. if (np.amax(label_im)>=1):