Interface ElevationModel
-
- All Superinterfaces:
AVList
,Disposable
,java.util.EventListener
,MessageListener
,java.beans.PropertyChangeListener
,Restorable
,WWObject
- All Known Implementing Classes:
AbstractElevationModel
,BasicElevationModel
,BathymetryFilterElevationModel
,CompoundElevationModel
,LocalElevationModel
,LocalRasterServerElevationModel
,WCSElevationModel
,WMSBasicElevationModel
,ZeroElevationModel
public interface ElevationModel extends WWObject, Restorable, Disposable
Provides the elevations to a
Globe
or other object holding elevations.An
ElevationModel
often approximates elevations at multiple levels of spatial resolution. For any given viewing position, the model determines an appropriate target resolution. That target resolution may not be immediately achievable, however, because the corresponding elevation data might not be locally available and must be retrieved from a remote location. When this is the case, theElevations
object returned for a sector holds the resolution achievable with the data currently available. That resolution may not be the same as the target resolution. The achieved resolution is made available in the interface.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description void
composeElevations(Sector sector, java.util.List<? extends LatLon> latlons, int tileWidth, double[] buffer)
Determines the elevations at specified locations within a specifiedSector
.boolean
contains(Angle latitude, Angle longitude)
Indicates whether a specified location is within the elevation model's domain.double
getBestResolution(Sector sector)
Indicates the best resolution attainable for a specified sector.double[]
getBestResolutions(Sector sector)
double
getDetailHint(Sector sector)
Returns the detail hint associated with the specified sector.double
getElevation(Angle latitude, Angle longitude)
Returns the elevation at a specified location.double[]
getElevations(Sector sector, java.util.List<? extends LatLon> latlons, double[] targetResolution, double[] buffer)
Returns the elevations of a collection of locations.double
getElevations(Sector sector, java.util.List<? extends LatLon> latlons, double targetResolution, double[] buffer)
Returns the elevations of a collection of locations.long
getExpiryTime()
Returns the current expiry time.double[]
getExtremeElevations(Angle latitude, Angle longitude)
Returns the minimum and maximum elevations at a specified location.double[]
getExtremeElevations(Sector sector)
Returns the minimum and maximum elevations within a specified sector of the elevation model.double
getLocalDataAvailability(Sector sector, java.lang.Double targetResolution)
Returns the proportion of this elevation model's data that is local -- in the computer's data cache or installed data filestore -- for a specified sector and target resolution.double
getMaxElevation()
Returns the maximum elevation contained in the elevation model.double
getMinElevation()
Returns the minimum elevation contained in the elevation model.double
getMissingDataReplacement()
Returns the elevation used for missing values in the elevation model.double
getMissingDataSignal()
Returns the current missing-data signal.java.lang.String
getName()
Returns the elevation model's name.double
getUnmappedElevation(Angle latitude, Angle longitude)
Returns the elevation at a specified location, but without replacing missing data with the elevation model's missing data replacement value.double[]
getUnmappedElevations(Sector sector, java.util.List<? extends LatLon> latlons, double[] targetResolution, double[] buffer)
Returns the elevations of a collection of locations.double
getUnmappedElevations(Sector sector, java.util.List<? extends LatLon> latlons, double targetResolution, double[] buffer)
Returns the elevations of a collection of locations.double
getUnmappedLocalSourceElevation(Angle latitude, Angle longitude)
Returns the elevation for this elevation model's highest level of detail if the source file for that level and the specified location exists in the local elevation cache on disk.int
intersects(Sector sector)
Indicates whether the elevation model covers a specified sector either partially or fully.boolean
isEnabled()
Indicates whether this elevation model is used or ignored.boolean
isExtremesCachingEnabled()
Indicates whether extreme value caching is enabled.boolean
isNetworkRetrievalEnabled()
Indicates whether the elevation model is allowed to retrieve data from the network.void
setEnabled(boolean enabled)
Indicates whether this elevation model is used or ignored.void
setExpiryTime(long expiryTime)
Specifies the time of the elevation model's most recent dataset update.void
setExtremesCachingEnabled(boolean enabled)
Indicates whether extreme values of sectors should be cached as they're computed.void
setMissingDataReplacement(double missingDataValue)
Specifies the elevation used for missing values in the elevation model.void
setMissingDataSignal(double flag)
Specifies the value used to identify missing data in an elevation model.void
setName(java.lang.String name)
Set the elevation model's name.void
setNetworkRetrievalEnabled(boolean networkRetrievalEnabled)
Controls whether the elevation model is allowed to retrieve data from the network.-
Methods inherited from interface gov.nasa.worldwind.avlist.AVList
addPropertyChangeListener, addPropertyChangeListener, clearList, copy, firePropertyChange, firePropertyChange, getEntries, getStringValue, getValue, getValues, hasKey, removeKey, removePropertyChangeListener, removePropertyChangeListener, setValue, setValues
-
Methods inherited from interface gov.nasa.worldwind.Disposable
dispose
-
Methods inherited from interface gov.nasa.worldwind.event.MessageListener
onMessage
-
Methods inherited from interface gov.nasa.worldwind.Restorable
getRestorableState, restoreState
-
-
-
-
Method Detail
-
getName
java.lang.String getName()
Returns the elevation model's name.- Returns:
- the elevation model's name.
- See Also:
setName(String)
-
setName
void setName(java.lang.String name)
Set the elevation model's name. The name is a convenience attribute typically used to identify the elevation model in user interfaces. By default, an elevation model has no name.- Parameters:
name
- the name to give the elevation model.
-
isNetworkRetrievalEnabled
boolean isNetworkRetrievalEnabled()
Indicates whether the elevation model is allowed to retrieve data from the network. Some elevation models have no need to retrieve data from the network. This flag is meaningless for such elevation models.- Returns:
true
if the elevation model is enabled to retrieve network data, elsefalse
.
-
setNetworkRetrievalEnabled
void setNetworkRetrievalEnabled(boolean networkRetrievalEnabled)
Controls whether the elevation model is allowed to retrieve data from the network. Some elevation models have no need for data from the network. This flag may be set but is meaningless for such elevation models.- Parameters:
networkRetrievalEnabled
-true
if network retrieval is allowed, elsefalse
.
-
getExpiryTime
long getExpiryTime()
Returns the current expiry time.- Returns:
- the current expiry time.
- See Also:
setExpiryTime(long)
-
setExpiryTime
void setExpiryTime(long expiryTime)
Specifies the time of the elevation model's most recent dataset update. If greater than zero, the model ignores and eliminates any previously cached data older than the time specified, and requests new information from the data source. If zero, the model uses any expiry times intrinsic to the model, typically initialized at model construction. The default expiry time is 0, thereby enabling a model's intrinsic expiration criteria.- Parameters:
expiryTime
- the expiry time of any cached data, expressed as a number of milliseconds beyond the epoch.- See Also:
for a description of milliseconds beyond the epoch.
-
setMissingDataSignal
void setMissingDataSignal(double flag)
Specifies the value used to identify missing data in an elevation model. Locations with this elevation value are assigned the missing-data replacement value, specified bysetMissingDataReplacement(double)
.The missing-data value is often specified by the metadata of the data set, in which case the elevation model automatically defines that value to be the missing-data signal. When the missing-data signal is not specified in the metadata, the application may specify it via this method.
- Parameters:
flag
- the missing-data signal value. The default is -Double.MAX_VALUE
.- See Also:
setMissingDataReplacement(double)
,getMissingDataSignal()
-
getMissingDataSignal
double getMissingDataSignal()
Returns the current missing-data signal.- Returns:
- the missing-data signal.
- See Also:
getMissingDataReplacement()
-
intersects
int intersects(Sector sector)
Indicates whether the elevation model covers a specified sector either partially or fully.- Parameters:
sector
- the sector in question.- Returns:
- 0 if the elevation model fully contains the sector, 1 if the elevation model intersects the sector but does not fully contain it, or -1 if the sector does not intersect the elevation model.
-
contains
boolean contains(Angle latitude, Angle longitude)
Indicates whether a specified location is within the elevation model's domain.- Parameters:
latitude
- the latitude of the location in question.longitude
- the longitude of the location in question.- Returns:
- true if the location is within the elevation model's domain, otherwise false.
-
getMaxElevation
double getMaxElevation()
Returns the maximum elevation contained in the elevation model. When the elevation model is associated with a globe, this value is the elevation of the highest point on the globe.- Returns:
- The maximum elevation of the elevation model.
-
getMinElevation
double getMinElevation()
Returns the minimum elevation contained in the elevation model. When associated with a globe, this value is the elevation of the lowest point on the globe. It may be negative, indicating a value below mean surface level. (Sea level in the case of Earth.)- Returns:
- The minimum elevation of the model.
-
getExtremeElevations
double[] getExtremeElevations(Angle latitude, Angle longitude)
Returns the minimum and maximum elevations at a specified location.- Parameters:
latitude
- the latitude of the location in question.longitude
- the longitude of the location in question.- Returns:
- A two-element
double
array indicating, respectively, the minimum and maximum elevations at the specified location. These values are the global minimum and maximum if the local minimum and maximum values are currently unknown.
-
getExtremeElevations
double[] getExtremeElevations(Sector sector)
Returns the minimum and maximum elevations within a specified sector of the elevation model.- Parameters:
sector
- the sector in question.- Returns:
- A two-element
double
array indicating, respectively, the sector's minimum and maximum elevations. These elements are the global minimum and maximum if the local minimum and maximum values are currently unknown.
-
getBestResolution
double getBestResolution(Sector sector)
Indicates the best resolution attainable for a specified sector.- Parameters:
sector
- the sector in question. If null, the elevation model's best overall resolution is returned. This is the best attainable at some locations but not necessarily at all locations.- Returns:
- the best resolution attainable for the specified sector, in radians, or
Double.MAX_VALUE
if the sector does not intersect the elevation model.
-
getBestResolutions
double[] getBestResolutions(Sector sector)
-
getDetailHint
double getDetailHint(Sector sector)
Returns the detail hint associated with the specified sector. If the elevation model does not have any detail hint for the sector, this method returns zero.- Parameters:
sector
- the sector in question.- Returns:
- The detail hint corresponding to the specified sector.
- Throws:
java.lang.IllegalArgumentException
- ifsector
is null.
-
getElevation
double getElevation(Angle latitude, Angle longitude)
Returns the elevation at a specified location. If the elevation at the specified location is the elevation model's missing data signal, or if the location specified is outside the elevation model's coverage area, the elevation model's missing data replacement value is returned.The elevation returned from this method is the best available in memory. If no elevation is in memory, the elevation model's minimum extreme elevation at the location is returned. Local disk caches are not consulted.
- Parameters:
latitude
- the latitude of the location in question.longitude
- the longitude of the location in question.- Returns:
- The elevation corresponding to the specified location, or the elevation model's missing-data replacement value if there is no elevation for the given location.
- See Also:
setMissingDataSignal(double)
,getUnmappedElevation(gov.nasa.worldwind.geom.Angle, gov.nasa.worldwind.geom.Angle)
-
getUnmappedElevation
double getUnmappedElevation(Angle latitude, Angle longitude)
Returns the elevation at a specified location, but without replacing missing data with the elevation model's missing data replacement value. When a missing data signal is found, the signal value is returned, not the replacement value.- Parameters:
latitude
- the latitude of the location for which to return the elevation.longitude
- the longitude of the location for which to return the elevation.- Returns:
- the elevation at the specified location, or the elevation model's missing data signal. If no data is currently in memory for the location, and the location is within the elevation model's coverage area, the elevation model's minimum elevation at that location is returned.
-
getElevations
double getElevations(Sector sector, java.util.List<? extends LatLon> latlons, double targetResolution, double[] buffer)
Returns the elevations of a collection of locations. Replaces any elevation values corresponding to the missing data signal with the elevation model's missing data replacement value. If a location within the elevation model's coverage area cannot currently be determined, the elevation model's minimum extreme elevation for that location is returned in the output buffer. If a location is outside the elevation model's coverage area, the output buffer for that location is not modified; it retains the buffer's original value.- Parameters:
sector
- the sector in question.latlons
- the locations to return elevations for. If a location is null, the output buffer for that location is not modified.targetResolution
- the desired horizontal resolution, in radians, of the raster or other elevation sample from which elevations are drawn. (To compute radians from a distance, divide the distance by the radius of the globe, ensuring that both the distance and the radius are in the same units.)buffer
- an array in which to place the returned elevations. The array must be pre-allocated and contain at least as many elements as the list of locations.- Returns:
- the resolution achieved, in radians, or
Double.MAX_VALUE
if individual elevations cannot be determined for all of the locations. - Throws:
java.lang.IllegalArgumentException
- if either the sector, latlons list or elevations array is null.- See Also:
setMissingDataSignal(double)
-
getElevations
double[] getElevations(Sector sector, java.util.List<? extends LatLon> latlons, double[] targetResolution, double[] buffer)
Returns the elevations of a collection of locations. Replaces any elevation values corresponding to the missing data signal with the elevation model's missing data replacement value. If a location within the elevation model's coverage area cannot currently be determined, the elevation model's minimum extreme elevation for that location is returned in the output buffer. If a location is outside the elevation model's coverage area, the output buffer for that location is not modified; it retains the buffer's original value.- Parameters:
sector
- the sector in question.latlons
- the locations to return elevations for. If a location is null, the output buffer for that location is not modified.targetResolution
- the desired horizontal resolution, in radians, of the raster or other elevation sample from which elevations are drawn. (To compute radians from a distance, divide the distance by the radius of the globe, ensuring that both the distance and the radius are in the same units.) This is an array to enable specification of a target resolution per elevation model forCompoundElevationModel
. The entries must be in the same order as the elevations inCompoundElevationModel
.buffer
- an array in which to place the returned elevations. The array must be pre-allocated and contain at least as many elements as the list of locations.- Returns:
- the resolutions achieved, in radians, which will be
Double.MAX_VALUE
if individual elevations cannot be determined for all of the locations. The entries are in the same order as the elevations inCompoundElevationModel
. - Throws:
java.lang.IllegalArgumentException
- if either the sector, latlons list, target resolutions array or elevations array is null.- See Also:
setMissingDataSignal(double)
-
getUnmappedElevations
double getUnmappedElevations(Sector sector, java.util.List<? extends LatLon> latlons, double targetResolution, double[] buffer)
Returns the elevations of a collection of locations. Does not replace any elevation values corresponding to the missing data signal with the elevation model's missing data replacement value. If a location within the elevation model's coverage area cannot currently be determined, the elevation model's minimum extreme elevation for that location is returned in the output buffer. If a location is outside the elevation model's coverage area, the output buffer for that location is not modified; it retains the buffer's original value.- Parameters:
sector
- the sector in question.latlons
- the locations to return elevations for. If a location is null, the output buffer for that location is not modified.targetResolution
- the desired horizontal resolution, in radians, of the raster or other elevation sample from which elevations are drawn. (To compute radians from a distance, divide the distance by the radius of the globe, ensuring that both the distance and the radius are in the same units.)buffer
- an array in which to place the returned elevations. The array must be pre-allocated and contain at least as many elements as the list of locations.- Returns:
- the resolution achieved, in radians, or
Double.MAX_VALUE
if individual elevations cannot be determined for all of the locations. - See Also:
setMissingDataSignal(double)
-
getUnmappedElevations
double[] getUnmappedElevations(Sector sector, java.util.List<? extends LatLon> latlons, double[] targetResolution, double[] buffer)
Returns the elevations of a collection of locations. Does not replace any elevation values corresponding to the missing data signal with the elevation model's missing data replacement value. If a location within the elevation model's coverage area cannot currently be determined, the elevation model's minimum extreme elevation for that location is returned in the output buffer. If a location is outside the elevation model's coverage area, the output buffer for that location is not modified; it retains the buffer's original value.- Parameters:
sector
- the sector in question.latlons
- the locations to return elevations for. If a location is null, the output buffer for that location is not modified.targetResolution
- the desired horizontal resolution, in radians, of the raster or other elevation sample from which elevations are drawn. (To compute radians from a distance, divide the distance by the radius of the globe, ensuring that both the distance and the radius are in the same units.) This is an array to enable specification of a target resolution per elevation model forCompoundElevationModel
. The entries must be in the same order as the elevations inCompoundElevationModel
.buffer
- an array in which to place the returned elevations. The array must be pre-allocated and contain at least as many elements as the list of locations.- Returns:
- the resolutions achieved, in radians, which will be
Double.MAX_VALUE
if individual elevations cannot be determined for all of the locations. The entries are in the same order as the elevations inCompoundElevationModel
. - Throws:
java.lang.IllegalArgumentException
- if either the sector, latlons list, target resolutions array or elevations array- See Also:
setMissingDataSignal(double)
-
getMissingDataReplacement
double getMissingDataReplacement()
Returns the elevation used for missing values in the elevation model.- Returns:
- the value that indicates that no data is available at a location.
- See Also:
setMissingDataSignal(double)
,getMissingDataSignal()
-
setMissingDataReplacement
void setMissingDataReplacement(double missingDataValue)
Specifies the elevation used for missing values in the elevation model.- Parameters:
missingDataValue
- the value that indicates that no data is available at a location.- See Also:
setMissingDataSignal(double)
-
composeElevations
void composeElevations(Sector sector, java.util.List<? extends LatLon> latlons, int tileWidth, double[] buffer) throws java.lang.Exception
Determines the elevations at specified locations within a specifiedSector
.- Parameters:
sector
- the sector containing the locations.latlons
- the locations for which to return elevations.tileWidth
- the number of locations that comprise one row in thelatlons
argument.buffer
- a buffer in which to put the elevations. The buffer must have at least as many elements as the number of specified locations.- Throws:
java.lang.Exception
- if the method fails. Different elevation models may fail for different reasons.java.lang.IllegalArgumentException
- if either the sector, list of locations or buffer is null, if the buffer size is not at least as large as the location list, or the tile width is greater than the locations list length or less than 1.
-
getLocalDataAvailability
double getLocalDataAvailability(Sector sector, java.lang.Double targetResolution)
Returns the proportion of this elevation model's data that is local -- in the computer's data cache or installed data filestore -- for a specified sector and target resolution.- Parameters:
sector
- the sector of interest.targetResolution
- the desired horizontal resolution, in radians, of the raster or other elevation sample from which elevations are drawn. (To compute radians from a distance, divide the distance by the radius of the globe, ensuring that both the distance and the radius are in the same units.) Specify null to use this elevation model's best resolution.- Returns:
- the fraction of the data that is local. A value of 1.0 indicates that all the data is available.
-
setEnabled
void setEnabled(boolean enabled)
Indicates whether this elevation model is used or ignored.- Parameters:
enabled
- true if this elevation model is used, otherwise false.
-
isEnabled
boolean isEnabled()
Indicates whether this elevation model is used or ignored.- Returns:
- true if this elevation model is used, otherwise false.
-
setExtremesCachingEnabled
void setExtremesCachingEnabled(boolean enabled)
Indicates whether extreme values of sectors should be cached as they're computed. Caching should be disabled if especially many sectors are to be used when querying extreme elevations of this elevation model, such as during terrain intersection calculations. The default is for caching to be enabled. During normal operation caching enhances performance, but during terrain intersection computation it can hamper performance.- Parameters:
enabled
- true if extreme value caching should be performed.
-
isExtremesCachingEnabled
boolean isExtremesCachingEnabled()
Indicates whether extreme value caching is enabled.- Returns:
- true if extreme values caching is enabled, otherwise false.
- See Also:
setExtremesCachingEnabled(boolean)
-
getUnmappedLocalSourceElevation
double getUnmappedLocalSourceElevation(Angle latitude, Angle longitude)
Returns the elevation for this elevation model's highest level of detail if the source file for that level and the specified location exists in the local elevation cache on disk. This method is useful only when an elevation dataset has been pre-cached.- Parameters:
latitude
- The latitude of the location whose elevation is desired.longitude
- The longitude of the location whose elevation is desired.- Returns:
- The elevation at the specified location, if that location is contained in this elevation model and the
source file for the highest-resolution elevation at that location exists in the current disk cache. Otherwise
this elevation model's missing data signal is returned (see
getMissingDataSignal()
).
-
-