To retrieve measurement values from a NetCDF or Grib model, you can use a ALcdMeasureProvider
created by an ILcdModelMeasureProviderFactory
.
Program: retrieving measurements from a NetCDF model
//Decode the model
List<TLcdISO19103Measure> measurementsToReturn = new ArrayList<>();
String source = "Data/NetCDF/cloud_cover.nc";
TLcdNetCDFModelDecoder decoder = new TLcdNetCDFModelDecoder();
ILcd2DBoundsIndexedModel model = (ILcd2DBoundsIndexedModel) decoder.decode(source);
//Create an ALcdMeasureProvider by using the ILcdModelMeasureProviderFactory instances registered as service
Iterator<ILcdModelMeasureProviderFactory> iterator = TLcdServiceLoader.getInstance(ILcdModelMeasureProviderFactory.class).iterator();
ALcdMeasureProvider measureProvider = null;
while (iterator.hasNext() && measureProvider == null) {
ILcdModelMeasureProviderFactory factory = iterator.next();
measureProvider = factory.createMeasureProvider(model);
}
//Query the ALcdMeasureProvider for the measurements at a certain location
if (measureProvider != null) {
ILcdModelReference modelReference = model.getModelReference();
ILcdPoint center = model.getBounds().getCenter();
ALcdMeasureProvider.Parameters params = ALcdMeasureProvider.Parameters.newBuilder().build();
TLcdISO19103Measure[] measurements = measureProvider.retrieveMeasuresAt(center, modelReference, params);
for (TLcdISO19103Measure measurement : measurements) {
//do something with the measurement
System.out.println("measurement = " + measurement);
}
}