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