public class TLcyLOSAddOn extends ALcyFormatAddOn
This add-on provides support for LOS (Line-of-sight) on Lightspeed maps. More specifically, it provides the base format for the
LOS model as well as the UI properties panel. TLcyLspLOSAddOn
takes care of the visualization
of line-of-sight on Lightspeed maps.
To calculate and visualize line-of-sight on GXY maps, use TLcyLOSCoverageAddOn
.
It provides line-of-sight functionality for GXY maps only.
Modifier and Type | Field and Description |
---|---|
static String |
LOS_MODEL_DESCRIPTOR_TYPENAME
The LOS Model will use this as the type name in the model descriptor.
|
Constructor and Description |
---|
TLcyLOSAddOn()
Create a new TLcyLOSAddOn.
|
Modifier and Type | Method and Description |
---|---|
protected ALcyFormat |
createBaseFormat()
Returns a new data format for this add-on.
|
protected Function<TLcdDomainObjectContext,TLcdShapeAltitudeContext<ILcdPoint>> |
createCenterPointShapeProvider()
Returns a function used to calculate the center point of the line-of-sight and
its corresponding altitude mode.
|
protected ALcyFormat |
createFormatWrapper(ALcyFormat aBaseFormat)
Returns a new data format wrapper for this add-on.
|
protected ILcdAltitudeProvider |
createTerrainAltitudeProvider(ILcdView aView,
double aCalculationStepSize,
ILcdGeoReference aPreferredReference,
ILcyLucyEnv aLucyEnv)
Creates an
ILcdAltitudeProvider that is used by the line-of-sight calculations to retrieve the altitude of the terrain. |
void |
plugInto(ILcyLucyEnv aLucyEnv)
Creates and plugs in the add-on's format.
|
void |
unplugFrom(ILcyLucyEnv aLucyEnv)
Unplugs the add-on's format.
|
createFormatTool, getFormat
createPreferencesTool, getLongPrefix, getLucyEnv, getPreferences, getPreferencesTool, getShortPrefix
getConfigSourceName, getDisplayName, setConfigSourceName, setDisplayName
public static final String LOS_MODEL_DESCRIPTOR_TYPENAME
public void plugInto(ILcyLucyEnv aLucyEnv)
ALcyFormatAddOn
Creates and plugs in the add-on's format.
plugInto
in class ALcyFormatAddOn
aLucyEnv
- the Lucy environment to plug intoALcyAddOn.unplugFrom(com.luciad.lucy.ILcyLucyEnv)
public void unplugFrom(ILcyLucyEnv aLucyEnv)
ALcyFormatAddOn
unplugFrom
in class ALcyFormatAddOn
aLucyEnv
- the Lucy environmentALcyAddOn.plugInto(com.luciad.lucy.ILcyLucyEnv)
protected ALcyFormat createBaseFormat()
ALcyFormatAddOn
Returns a new data format for this add-on. Override this method to extend the default format with new functionality.
For example, to alter the icon of the layers of this format, you can decorate the layer factory created in the format:
@Override
protected ALcyFormat createBaseFormat() {
return new ALcyFormatWrapper(super.createBaseFormat()){
@Override
protected ILcdGXYLayerFactory createGXYLayerFactory(){
final ILcdGXYLayerFactory delegate = super.createGXYLayerFactory();
return new ILcdGXYLayerFactory(){
@Override
public ILcdGXYLayer createGXYLayer(ILcdModel aModel){
ILcdGXYLayer layer = delegate.createGXYLayer(aModel);
if (layer != null){
ILcdIcon icon = ...;
layer.setIcon(icon);
}
return layer;
}
}
}
}
}
createBaseFormat
in class ALcyFormatAddOn
protected final ALcyFormat createFormatWrapper(ALcyFormat aBaseFormat)
ALcyFormatAddOn
Returns a new data format wrapper for this add-on. A format wrapper extends the base format with aspects such as asynchronous painting, mutable file behavior, safe guarding, etc.
Overriding this method of an existing add-on should be done with extreme care as add-ons typically rely on the wrappers that should be present (e.g. a safe guard).
createFormatWrapper
in class ALcyFormatAddOn
aBaseFormat
- the base format to wrapALcyFormatWrapper
protected Function<TLcdDomainObjectContext,TLcdShapeAltitudeContext<ILcdPoint>> createCenterPointShapeProvider()
Returns a function used to calculate the center point of the line-of-sight and
its corresponding altitude mode.
The function receives the TLcdDomainObjectContext
for the (candidate) observer domain object,
and should return the center point for the line-of-sight when the domain object is a valid source, together with the altitude mode to interpret the Z-value of the point.
If not, the function should return null
.
The point returned by the function:
TLcdCoverageAltitudeMode.ABOVE_GEOID
, the geoid height information will be retrieved from the model reference.
In that case, the model reference must contain this information (see ILcdGeoReference.getGeodeticDatum()
and ILcdGeodeticDatum.hasNonZeroHeights()
).
The returned function will be called multiple times for the same domain object context. For example when the domain object changes, the function will be re-triggered to obtain the new shape.
When the function has returned a non-null
value for a certain domain object context,
it should return a non-null
value on subsequent calls for the same domain object context.
The default implementation of this method is based on the ALcdShape.fromDomainObject(Object)
for deriving the shape and uses a heuristic for the coverage altitude mode.
This method can also be called from a background thread.
ILcdPoint
and its altitude mode from a domain object context.protected ILcdAltitudeProvider createTerrainAltitudeProvider(ILcdView aView, double aCalculationStepSize, ILcdGeoReference aPreferredReference, ILcyLucyEnv aLucyEnv)
Creates an ILcdAltitudeProvider
that is used by the line-of-sight calculations to retrieve the altitude of the terrain.
The default implementation of this method returns an altitude provider using either the elevation of the painted terrain or the height
data available in the models loaded on the map, depending on the value of the useModelElevationData
property
in the configuration file of this add-on.
This method can also be called from a background thread.
aView
- The view containing the line-of-sight.
This can be used to access all the data that is loaded on the map.aCalculationStepSize
- The step size that will be used for the calculation.
It is based on the TLspLOSProperties.getRadiusStep()
and the TLspLOSProperties.getRadiusSampleDistances()
.aPreferredReference
- The reference that will be used the most to retrieve elevation values.
Performance will improve if the returned altitude provider can provide elevation values for points expressed in this reference without additional transformations.aLucyEnv
- The Lucy back-end