[netcdfgroup] arrays of fixed-length strings

John Caron caron at unidata.ucar.edu
Mon Aug 20 12:25:06 MDT 2007



Jeff Whitaker wrote:
> Ed Hartnett wrote:
>> Jeff Whitaker <jswhit at fastmail.fm> writes:
>>
>>  
>>> In netcdf-4.0, I don't see how to create variables which are arrays of
>>> strings with length > 1.  I see how to create arrays of
>>> single-characters, and arrays of variable-length strings, but not
>>> strings of a specified length.
>>>
>>> Am I missing something, or is this not supported by HDF5?
>>>
>>>     
>>
>> Howdy Jeff!
>>
>> Strings are variable length by their nature.
>>
>> How about a two dimensional array of NC_CHAR?
>>
>> Thanks,
>>
>> Ed
>>
>>
>>   
> 
> 
> Ed:  I use arrays of fixed length strings, padded with spaces, quite a 
> bit.  This simplifies the memory management issues associated with 
> arrays of variable length strings (which have no counterpart in Fortran 
> 90/95, although they are allowed in Fortran 2003).  Below is an excerpt 
> from my previous reply which explains why I don't like using 2-D arrays 
> of characters to represent 1-D arrays of fixed-length strings:
> 
> Russ: I realize you can use a array of shape ndim,8 to store an array of 
> ndim 8 character strings.  Thats the way I've done it with netcdf-3 - it 
> just feels clunky.  A typical use case for me is station data, where you 
> want to store the name of the station. I end up the with an array of 
> characters shaped (nstations,ncars) -  in fortran I read it into an  
> (nstations,nchars) character(len=1) array (after first finding out what 
> both nstations and nchars are), then reshape it into a (nstations) 
> character(len=nchars) array.  I'd rather just read it into a 
> character(len=nchars) array straight off.  Not a show stopper for sure, 
> but it would be more convenient.  I realize that specifying the data 
> type would be tricky,  instead of NC_CHAR, do you have a bunch of new 
> types NC_CHAR1, NC_CHAR2, ... NC_CHAR120?  Or a new function datatype = 
> nc_set_chartype(nchars)?  However, I bet it would get used a lot more 
> than the esoteric datatypes you have in netcdf-4 already (enums and 
> opaque for example).

Hi Jeff:

Suppose we stuck with fixed length char arrays for this case, but added a convenience method in the API that did the work for you. What would that convenience method look like?

John



More information about the netcdfgroup mailing list