The majority of formats require the same two steps for visualization on a GXY view. To visualize ASRP/USRP/ADRG data:
-
Decode the data into an
ILcdModelusing anILcdModelDecoder. -
Create an
ILcdGXYLayerfor theILcdModeland add it to theILcdGXYView.
//First create the model
ILcdModelDecoder decoder =
new TLcdCompositeModelDecoder(TLcdServiceLoader.getInstance(ILcdModelDecoder.class));
ILcdModel model = decoder.decode(sourceName);
//Create a layer for the model with default styling
ILcdGXYLayer layer = createGXYUSRPLayer(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);
/**
* The model decoder can return a single ILcdModel or an ILcdModelTreeNode,
* depending on the data set.
*
* This method can deal with both scenarios
*/
static ILcdGXYLayer createGXYUSRPLayer(ILcdModel model) {
//The model decoder returns a model tree node when the file contains multiple data sets
//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);
//Use recursion to create layers for the child models
node.addLayer(createGXYUSRPLayer(childModel));
}
return node;
} else if (model.getModelDescriptor() instanceof TLcdUSRPModelDescriptor ||
model.getModelDescriptor() instanceof TLcdUSRPDatasetModelDescriptor) {
return TLcdGXYLayer.create(model);
}
throw new IllegalArgumentException("Cannot create layer for model " + model);
}
This results in a ASRP/USRP/ADRG layer with default styling. See Visualizing Raster Data for more information about visualizing and styling raster data.
|
This code snippet uses the The model decoder class that is actually responsible for decoding ASRP/USRP/ADRG data is the
|