[thredds] Best way to handle missing grids in an aggregation.

Hi,

I'm aggregating some gridded data with an ncml entry in our THREDDS catalog.xml file. The entry looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<catalog name="NGDC THREDDS Server Default Catalog"
xmlns="http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0";
       xmlns:xlink="http://www.w3.org/1999/xlink";
       version="1.0.2">

 <service name="aggServices" serviceType="compound" base="">
<service name="dapService2" serviceType="OpenDAP" base="/thredds/dodsC/" />
   <service name="wcsService2" serviceType="WCS" base="/thredds/wcs/" />
   <service name="wms2" serviceType="WMS" base="/thredds/wms/" />
 </service>

 <dataset name="USTEC STEC Aggregation" ID="STEC-Agg"
          urlPath="stec-aggregation">
   <metadata inherited="true">
     <serviceName>aggServices</serviceName>
     <dataType>Grid</dataType>
   </metadata>

   <netcdf xmlns="http://www.unidata.ucar.edu/namespaces/netcdf/ncml-2.2";>
     <attribute name="Comment" value="Aggregation for USTEC STEC" />
     <aggregation dimName="Time" type="joinExisting" recheckEvery="15 min">
       <scan location="/nfs/ustec_netcdf/stec/latest7days"
             suffix=".nc" />
     </aggregation>
   </netcdf>

 </dataset>
</catalog>

Inside the netCDF files are grids from satellites:
time 1:  satellite_01, satellite_02, satellite_03
time 2:  satellite_01, satellite_02, satellite_03
time 3:  satellite_01, satellite_03
time 4:  satellite_03, satellite_02, satellite_01
and so on.

Sometimes data from a satellite is not present, as satellite_02 is missing at time 3 at in the example above. This appears as an all white image in the time sequence when viewing the satellite_02 result with IDV. What is the best way to handle this. Is there a missing grid flag, or should there be an empty image inserted, so that there is always a satellite_02 grid? We are also getting an error from IDV

java.io.IOException: Inconsistent array length read: 1165128303 != 1914731274
  at ucar.nc2.dt.grid.GeoGrid.readDataSlice(GeoGrid.java:616)
  at ucar.nc2.dt.grid.GeoGrid.readDataSlice(GeoGrid.java:524)
  at ucar.nc2.dt.grid.GeoGrid.readVolumeData(GeoGrid.java:445)
  at ucar.visad.data.GeoGridFlatField.readData(GeoGridFlatField.java:220)
  at ucar.visad.data.CachedFlatField.getMyValues(CachedFlatField.java:479)
  at ucar.visad.data.CachedFlatField.getMyValues(CachedFlatField.java:467)
at ucar.visad.data.CachedFlatField.unpackFloats(CachedFlatField.java:614)
  at visad.FlatField.getFloats(FlatField.java:1567)
at visad.ShadowFunctionOrSetType.doTransform(ShadowFunctionOrSetType.java:1404) at visad.java3d.ShadowFunctionOrSetTypeJ3D.doTransform(ShadowFunctionOrSetTypeJ3D.java:195) at visad.java3d.ShadowFunctionOrSetTypeJ3D.recurseRange(ShadowFunctionOrSetTypeJ3D.java:1209) at visad.java3d.ShadowFunctionOrSetTypeJ3D$1.run(ShadowFunctionOrSetTypeJ3D.java:181)
  at visad.util.ThreadManager$1.run(ThreadManager.java:292)
  at visad.util.ThreadPool$ThreadMinnow.run(ThreadPool.java:98)

Do you think this error is due to the missing satellite_02 grids?

One more question: Also, as can be seen at time 4, the satellite grids are not always in the same order in the netCDF file. Is this a problem? I can have my colleague regenerate the data with grids in a consistent order if needed.

If I have answers to the above, I can probably figure out the following on my own. If all satellites must be present, maybe we need to start a new aggregation if a new satellite is added to the set or one is retired from service?
Maybe we should be splitting out each satellite into their own netCDF files?

Thanks,
Ken



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