Re: [netcdfgroup] How to represent this data in NetCDF

On Mon, Jul 30, 2012 at 2:00 PM, <netcdfgroup-request@xxxxxxxxxxxxxxxx>wrote:

> Hi,
>
> I need to represent a number of 'objects' detected in a NetCDF data set.
> The objects basically comprise of N vectors of dimension D.
>
> 1       x1      y1      z1
>  .
>  .
> N       xN      yN      zN
>
> The trouble is, that N varies from object to object. I was taking a look
> at the C-API for variable length arrays, but couldn't really make heads nor
> tails of it. Also, I have been using the C++ API heavily and it does not
> seem to have any notion of variable length arrays.
>
> Any other (possibly backward compatible) way I can tackle this one?
>
> Kind Regards,
> Ion
>


My company does a fair amount of this. We store polygons that can have
anywhere from 3 to 20 or more sides. Knowing the old adage, "there's no
such thing as a problem that can't be solved by adding a layer of
indirection," our solution has been to store all of the vertex coordinates
in a simple n_verts x 3 array. We then create two 1-D indexing arrays: the
first (vertex_refs) gives the vertex indices of all of the polygons in
succession. The second gives the index into the vertex_refs array to the
first vertex of each polygon. So...

   dim n_polygons = ...
   dim nverts = ...
   dim nvertex_refs = ...
   dim ndims = 3

   var vertex_coords(nverts,ndims) = vertex1(x,y,z), vertex2(x,y,z), ...
   var vertex_refs(nvertex_refs) = 0,1,2,3,2,3,4,34,37,52,91,0,10,11,...
   var start_vertex(n_polygons) = 0,4,7,14,...

...would be a file which starts with a quad (vertices 0,1,2,3), a triangle
(vertices 2,3,4) and a heptagon (vertices 34,37,52,91,0,10,11). If quick
indexing isn't an issue you could just use -1 in the vertex_refs array to
demark polygons instead of the start_vertex array. The number of
vertices/sides for each polygon is quickly extracted from start_vertex (w/
a guard on the last one).

This works well for both classic and HDF5-format files, but might be
painful if your objects aren't a simple type.

Hope this helps.

- Chuck
  • 2012 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: