The majority of formats require the same two steps for visualization on a GXY view. To visualize BUFR data:
-
Decode the data into an
ILcdModel
using anILcdModelDecoder
. -
Create an
ILcdGXYLayer
for theILcdModel
and add it to theILcdGXYView
.
//First create the model
ILcdModelDecoder decoder =
new TLcdCompositeModelDecoder(TLcdServiceLoader.getInstance(ILcdModelDecoder.class));
ILcdModel model = decoder.decode(sourceName);
TLcdBUFRGXYLayerFactory layerFactory = new TLcdBUFRGXYLayerFactory();
ILcdGXYLayer layer;
//The model decoder returns a model tree node when the file contains multiple messages
//The node itself is just an empty container. We create an empty layer node for that container.
//Then we loop over the child models (=the actual data), and create layers for those as well
if (model instanceof ILcdModelContainer) {
TLcdGXYLayerTreeNode node = new TLcdGXYLayerTreeNode(model);
for (int i = 0; i < ((ILcdModelContainer) model).modelCount(); i++) {
ILcdModel childModel = ((ILcdModelContainer) model).getModel(i);
node.addLayer(layerFactory.createGXYLayer(childModel));
}
layer = node;
} else {
layer = layerFactory.createGXYLayer(model);
}
//Wrap the layer with an async layer wrapper to ensure
//that the view remains responsive while data is being painted
layer = ILcdGXYAsynchronousLayerWrapper.create(layer);
//Add the async layer to the GXY view (an ILcdGXYView)
view.addGXYLayer(layer);
This results in a BUFR layer with default styling.
This code snippet uses the The model decoder class that is actually responsible for decoding BUFR data is the
|