Re: DEM and GeoTIFF to VisAD

Hi Don,

> It's been a while since I asked this question so just I'm
> just probing the list to see if anyone has:
>
> - developed a reader of USGS 7.5 minute DEM data that generates VisAD
>    objects.  The purpose would be to:
>     - display the DEM as an isosurface, contour lines and or
>       mesh (like Ugo's DEMViewer does)
>     - create vertical topographic slices in any direction.
>
>    If no one has already done this, then I'd like some input
>    on the best way to structure the data.   A depiction of the data
>    can be found at:
>
>        http://edc.usgs.gov/guides/images/dem/utm.gif
>
>    and a fuller description at:
>
>        http://edc.usgs.gov/guides/dem.html#spatial
>
>    Basically, it is comprised of a set of equally spaced profiles
>    along UTM easting line. Each profile may be a different length and the
>    UTM easting value (X) is constant. I was thinking of having
>    a FlatField of (UTM_X, UTM_Y) -> Z, but I'm not sure what
>    to use for the domain set.  Maybe an Irregular2DSet of
>    float[num_UTMX_points][] and for each UTMX array, I would
>    have the number of UTM_Y points?

Their topography sampling almost has a rectangular topology,
but not quite. I can think of four approaches:

1. Use a Gridded2DSet that covers all their sample points,
and fills in others to form a rectangular grid, with missing
(i.e., NaN) topography values at the filled points.

2. Like 1, except get the topography values at the filled-in
points from neighboring USGS files.

3. Use an Irregular2DSet and specify the topology yourself
using a DelaunayCustom (if you let Irregular2DSet derive its
own Delaunay topology, it'll be slow and there may be trouble
with co-linear points).

4. Define a new extension of SampledSet whose constructor
constructs a Gridded2DSet as in 1, and then implements all
the SampledSet methods by invoking the methods of this
adapted Gridded2DSet with appropriate massaging of data. This
SampledSet extension would include one or two integer arrays
defining the mapping between its index values and index values
of the adapted Gridded2DSet. Note that Irregular1DSet does
something very much like this, constructing and adapting a
Gridded1DSet, whose samples are just a sort of the values
of the Irregular1DSet, and with integer arrays (declared in
IrregularSet) oldToNew and newToOld that define the mapping
between index values.

Good luck,
Bill