begin dirasc = "./" filasc = systemfunc("cd "+dirasc+" ; ls test.txt") pthasc = dirasc+filasc nfil = dimsizes(filasc) print(filasc) print("----") ;----- Read the values in as 1D array of strings to get rows and columns. data = asciiread(pthasc,-1,"string") ncols = dimsizes(str_split(data(0),",")) nrows = dimsizes(data) ;----- Open pc variable (for each latitude/longitude point) lat := stringtodouble( str_get_field(data(1:), 8, ",") ) lon := stringtodouble( str_get_field(data(1:), 9, ",") ) pc := stringtodouble( str_get_field(data(1:), 10, ",") ) N = dimsizes(lat) var = pc var@lat1d = lat var@lon1d = lon printVarSummary(var) printMinMax(var, 0) ;------ Create coordinates lonW = (/-119.995/) lonE = (/-24.005/) latS = (/-55.995/) latN = (/32.995/) lat0 = latS lat1 = latN lon0 = lonW lon1 = lonE dgrad = 0.01 npointslat = toint(abs(lat1-lat0)/dgrad)+1 npointslon = toint(abs(lon1-lon0)/dgrad)+1 lat2 = fspan(lat0,lat1,npointslat)*1.d lon2 = fspan(lon0,lon1,npointslon)*1.d lat2!0 = "lat" lat2&lat = lat2 lat2@long_name = "lat" lat2@units = "degrees_north" lon2!0 = "lon" lon2&lon = lon2 lon2@long_name = "lon" lon2@units = "degrees_east" nlats = dimsizes(lat2) nlons = dimsizes(lon2) ;----- Create a new var to pc's values new_data = new((/npointslat,npointslon/),"double") new_data = 0 ; start new_data!0 = "lat" new_data!1 = "lon" new_data&lat = lat2 new_data&lon = lon2 printVarSummary(new_data) printMinMax(new_data, 0) ;------ do i=0,N-1 la = lat(i) loon = lon(i) new_data({la},{loon}) = new_data({la},{loon})+(/var(i)/) end do new_data = where(new_data .ge. 0, new_data@_FillValue, new_data) printVarSummary(new_data) printMinMax(new_data, 0) ;---- Selecting just non-missing values data1d := ndtooned(new_data) ; reduce to 1D array ivalid := ind(.not.ismissing(data1d)) ; extract only the non-missing values. xvalid := data1d(ivalid) ; to float asciiwrite("xvalid.txt", sprintf("%9.2f", xvalid)) ;------------ Plot wks = gsn_open_wks("png","test") setvalues NhlGetWorkspaceObjectId() "wsMaximumSize" : 900000000 end setvalues res = True res@mpFillOn = False res@gsnSpreadColors = True res@gsnAddCyclic = False res@cnFillOn = True res@cnLinesOn = False res@cnLineLabelsOn = False res@cnInfoLabelOn = False mnmxint = nice_mnmxintvl( min(new_data), max(new_data), 18, False) res@cnLevelSelectionMode = "ManualLevels" res@cnMinLevelValF = mnmxint(0) res@cnMaxLevelValF = mnmxint(1) res@cnLevelSpacingF = mnmxint(2) plot = gsn_csm_contour_map(wks,new_data,res) draw (plot) frame(wks) end