Re: Can't get out of define mode in ncdf, not specific to variable. [message #82058] |
Fri, 16 November 2012 19:35  |
Fabzi
Messages: 305 Registered: July 2010
|
Senior Member |
|
|
On 11/17/2012 12:25 AM, Paul van Delst wrote:
> How many variables are you writing? What version of IDL? What version of
> netCDF?
Also, before NCDF4 (7.1 patched and IDL8+), files could not be larger
than 2Gb. If you attempt to define to many variables that will make the
file larger than 2Gb (NCDF knows how big a file is going to be since you
define the size of your variables first) this could also cause such an
error...
> If you are writing lots of variables, there used to be a limit to the
> total number (in older netcdf's at least. I think it was 300).
>
> Complete shot in the dark.....
>
>
> On 11/15/12 17:57, neleh.mac wrote:
>> So I am using IDL to read in ncdf data, and write out (to a new
>> file)
>> the processed data. So I go to define mode, set up the variable, add
>> some attributes, switch to data mode, stick in the data, and then go
>> back to define for the next one.
>>
>> e.g.
>> ncid = ncdf_create(file_name, /CLOBBER)
>> londim = ncdf_dimdef(ncid, 'longitude_dim', 144)
>> latdim = ncdf_dimdef(ncid, 'latitude_dim', 91)
>>
>> vid = ncdf_vardef(ncid, 'emission', [londim,latdim], /float)
>> ncdf_attput, ncid, vid, 'long_name', "Some emissions"
>> ncdf_control, ncid, /ENDEF
>> ncdf_varput, ncid, vid, emiss_dat
>> ncdf_control, ncid, /REDEF
>>
>> vid = ncdf_vardef(ncid, 'emission2', [londim,latdim], /float)
>> ncdf_attput, ncid, vid, 'long_name', "Some emissions 2"
>> ncdf_control, ncid, /ENDEF
>> ncdf_varput, ncid, vid, emiss_dat2
>> ncdf_control, ncid, /REDEF
>>
>> ... etc.
>>
>> This works fine for several variables, over and over, until a certain
>> point in the code and then at it will not get out of define mode. I
>> commented out that particular part of the code where it was falling
>> over, and got it to work fine (but my output file now has one less
>> variable).
>>
>> Now the weird part.
>>
>> If I take the chunk of code for the variable that it falls at, and
>> copy it back in further up the code, it works through it fine. It
>> only fails when it gets to that line again, this time on a variable
>> it wrote fine first time round.
>>
>> It's like it's failing after going into define mode a certain number
>> of times, it's not specific to any variable I'm trying to write, it
>> just always fails on the nth one, regardless of what it is. I've
>> swopped round the order it writes them to the file, and they all get
>> written, just not if they happen to be at a certain point in the
>> order. I have tried removing attributes from the variables but this
>> doesn't seem to have any effect. I am very confused by this, please
>> can you help?
|
|
|