Re: [netcdfgroup] Need help to convert .csv files to netCDF files

Chris,

Each time step is a different file. Original final name of the
"TEST_file.csv is TRMM_1998_01_0100_newntcl.csv. So the next file for next
time step
is TRMM_1998_01_0103_newntcl.csv, TRMM_1998_01_0106_newntcl.csv,
TRMM_1998_01_0109_newntcl.csv
 and so on. I have the time steps until TRMM_1998_02_1512_newntcl.csv.

Do you know how to loop through file names and store in arrays?

Thanks again.




On Wed, Mar 11, 2015 at 3:19 PM, Chris Barker <chris.barker@xxxxxxxx> wrote:

> Sorry, I really dont have time to do it for you, but a couple hints:
>
> IF you're lucky, you can "reshape" the input arrays in one step:
>
> data = np.loadtxt('TEST_file.csv', delimiter=',')
>
> lat = data[:,0] # the first column -- if that is latitude
>
> lat = lat.reshape( (num_times, num_lats, num_lons) )
>
> That _might put it all in the right order, depending on hoe it's written
> to the file. If that doesn't work, this might:
>
> lat = lat.reshape( (num_times, num_lats, num_lons),  order='F')
>
> If that doesn't work,  then you may have to loop through all of by hand,
> in the right order:
>
> new_data = np.zeros( (num_times, num_lats, num_lons) )
> i = 0
> for t in range(num_times):
>     for lat in range(num_lats):
>         for lon in range(num_lons):
>             new_data[t, lat, lon] = old_data[i]
>             i += 1
>
> You may need to change the order of those loops to match your data.
>
> Also,m I see three columns, not four in your sample file -- is each time
> step in a different file? That wold require you to loop through all the
> files to load each time...
>
> Take a look at python and numpy tutorials online to learn a bit more about
> all this.
>
> -Chris
>
>
>
>
> On Wed, Mar 11, 2015 at 12:03 PM, Dumindu Jayasekera <
> d.jayasekera@xxxxxxxxxxxxxxxxx> wrote:
>
>> Chris,
>>
>> Thanks again. I am unable to create the 3D array since I have limited
>> knowledge in python.
>>
>> I have attached the csv files, python scripts and sample netCDF file.
>>
>> Any help is appreciated.
>>
>>
>>
>>
>>
>> On Wed, Mar 11, 2015 at 8:45 AM, Chris Barker <chris.barker@xxxxxxxx>
>> wrote:
>>
>>> On Tue, Mar 10, 2015 at 5:50 PM, Dumindu Jayasekera <
>>> d.jayasekera@xxxxxxxxxxxxxxxxx> wrote:
>>>
>>>> Thanks again Chris.
>>>>
>>>> I think I dont need to core metadata. I was able to produce the .nc
>>>> file using the code below (as you suggested).
>>>>
>>>>
>>> As Rich suggests, you may   be better off using onf the libraries
>>> suggested, Iris, in particular will get all the complex CF metadaat stuff
>>> right for you.
>>>
>>> But you're this close, so...
>>>
>>>
>>>> But, how can I modify to rename the var1 = lat, var2 = lon, var3 =
>>>> precipitation in the code below.?
>>>>
>>>
>>>  From the nc file you sent, it looks like you want the precipitiaon to
>>> be a 3-d array: (time X ltitude X longitude), so:
>>>
>>>
>>> # this load the file into a Nx3 array (three columns)
>>>> data = np.loadtxt('TEST_file.csv', delimiter=',')
>>>>
>>>
>>> note -- you dont have a 3-d array here, you have a 2-d array, which is
>>> really three vectors -- you will need to re-shuffle these to get the 3-d
>>> array you want, and the time, lat, and long vectors.... but assumign you've
>>> done that:
>>>
>>>
>>> you'll need three dimensions:
>>>     time = ds.createDimension('time', num_times)
>>>     lat = ds.createDimension('latitude', num_latitude)
>>>     lon = ds.createDimension('longitude', num_longitude)
>>>
>>> Then you want your 3-d precip variable -- I"d call it something more
>>> readable than "r", but maybe you need that...
>>>
>>> r = ds.createVariable('r', np.float32, ('time', 'latitude', 'longitude'))
>>> var[:] = data[:,:,:]
>>> ## adds some attributes
>>> var.units = 'mm'
>>> var.long_name = 'Precipitation'
>>> ... and the others that you need.
>>>
>>> HTH,
>>>
>>> -Chris
>>>
>>> --
>>>
>>> Christopher Barker, Ph.D.
>>> Oceanographer
>>>
>>> Emergency Response Division
>>> NOAA/NOS/OR&R            (206) 526-6959   voice
>>> 7600 Sand Point Way NE   (206) 526-6329   fax
>>> Seattle, WA  98115       (206) 526-6317   main reception
>>>
>>> Chris.Barker@xxxxxxxx
>>>
>>
>>
>
>
> --
>
> Christopher Barker, Ph.D.
> Oceanographer
>
> Emergency Response Division
> NOAA/NOS/OR&R            (206) 526-6959   voice
> 7600 Sand Point Way NE   (206) 526-6329   fax
> Seattle, WA  98115       (206) 526-6317   main reception
>
> Chris.Barker@xxxxxxxx
>
  • 2015 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: