[ncl-talk] Reading and writing data

Adam Phillips asphilli at ucar.edu
Tue Feb 19 13:54:14 MST 2019


Hi Appo,
The nice aspect of your ascii file is that it is regular: Each grid point's
data is given over 100 rows, and each is monthly running from 1920-2014. I
would strongly recommend developing a new script that operates on each 100
row chunk of data, and that uses coordinate subscripting to put the data in
the proper place in your final data array. One negative to this method is
the possibility exists that multiple nearby data points get assigned to the
same grid point, but this can be countered by setting your master array
grid appropriately. An example:

; Untested! Review the code below.
 yrStrt = 1920
 yrLast = 2014
 file_name   = "Rain_estimate_2.5DegGrid.txt"
 rain    = asciiread(file_name, -1, "string")

lat = fspan(6.25,43.75,16)
lat at units = "degrees_north"
lat!0 = "lat"
lat&lat = lat
lon = fspan(-23.75, 11.25,15)
lon at units = "degrees_east"
lon!0 = "lon"
lon&lon = lon
time = yyyymm_time(yrStrt,yrLast,"integer")
mod_data =
new((/(yrLast-yrStrt+1)*12,dimsizes(lat),dimsizes(lon)/),float,-999.)
;Set up master array that will be filled in.
mod_data!0  = "time"
mod_data&time = time
mod_data!1 = "lat"
mod_data&lat = lat
mod_data!2 = "lon"
mod_data&lon = lon

nrow = numAsciiRow("file_name")

do gg = 0,nrow-1,100   ; Run a do loop over each 100 row segment
     temp = rain(gg:gg+99)
     coords = str_split(temp(1)," ")
     print(coords)     ; examine results of text split
     lat_coord = tofloat(coords(2))
     lon_coord = tofloat(coords(5))
     do hh = 5,99   ; operate on rows 5-99 of temp
          data = tofloat(str_split(temp(hh)," "))
          mod_data({data(0)*100+1:data(0)*100+12},{lat_coord},{lon_coord})
= (/ data(1:) /)
          delete(data)
    end do
     delete(temp)
    print("Now done with lat="+lat_coord+", lon="+lon_coord)
end do

The above should at least get you going. If further changes need to be made
to the above you will need to make them. If you have any further questions
let ncl-talk know.
Adam


On Tue, Feb 19, 2019 at 8:27 AM Appo derbetini <appopson4 at gmail.com> wrote:

>
> Dear NCL users,
>
> Here a script that i am using to read rainfall data.
> Data are given for each grid point.
> But points are not regularly distributed.
> for some grid point there is no data
>
> I want to construct  regular matrix (lat, lon) where point without data
> will be created and filled by missing value (-999.0 in the script).
>
> My script is giving wrong result !!!
>
> Any help will be appreciated
>
>
> Regards
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>


-- 
Adam Phillips
Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
www.cgd.ucar.edu/staff/asphilli/   303-497-1726

<http://www.cgd.ucar.edu/staff/asphilli>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190219/3f4ea0f5/attachment.html>


More information about the ncl-talk mailing list