public abstract class ALfnCoverageMetadata extends ALfnResourceMetadata implements ILcdBounded
ELfnDataType
.
If not set or set to null
, an auto-default value will be used based on the assets' types.
null
, an auto-default value will be used based on the union of the bounding boxes of the assets.
null
, an auto-default value will be used based on the common geographic references of the assets,
or EPSG:4326 if the assets don't have a common geographic reference.
null
, an auto-default value will be used based on the assets' types.
null
, this defaults to the empty list.
null
, this defaults to the empty list.
Instances of this class are immutable, thus thread-safe.
ALfnCoverageMetadata.AssetInfo.STATUS_INCOMPLETE
.
While fusion is ongoing, the status remains STATUS_COMPLETE
.
Once fusion is done, the fusion engine sets the statuses of all assets in a coverage to ALfnCoverageMetadata.AssetInfo.STATUS_COMPLETE
,
hereby bumping the coverage metadata's update sequence.
When adding a new asset to a coverage, its status should always be STATUS_INCOMPLETE
.
You should never 'choose' to change the status to STATUS_COMPLETE
, that is the responsibility of the fusion engine.
ALfnCoverageMetadata.Builder
needs access to the asset metadata.
An ILfnResourceMetadataResolver
allows a builder to gain access to the asset metadata using an asset ID.
You need a resolver if both the following conditions are true:
ALfnCoverageMetadata.Builder.addAssetInfo(ALfnAssetMetadata, String)
.ALfnCoverageMetadata.Builder.addAssetInfo(ALfnAssetMetadata, String)
.
ALfnAssetMetadata assetMetadata1;
ALfnAssetMetadata assetMetadata2;
TLcdGeodeticReference epsg4326 = new TLcdGeodeticReference();
ILcdBounds world = new TLcdLonLatBounds(-180, -90, 360, 180);
ALfnCoverageMetadata coverageMetadata = TLfnRasterCoverageMetadata
.newBuilder()
.assetInfo(assetMetadata1)
.assetInfo(assetMetadata2)
.geoReference(epsg4326)
.boundingBox(world)
.build();
Given a coverage, create a new coverage and reset its geographic reference and bounding box to the auto-defaults.
We have to us a resource resolver so that the builder can resolve asset IDs to asset metadata:
List<ALfnAssetMetadata> assetMetadatas = Arrays.asList(assetMetadata1, assetMetadata2);
ILfnResourceMetadataResolver resolver = new TLfnCollectionResourceMetadataResolver(assetMetadatas);
ALfnCoverageMetadata newCoverageMetadata = coverageMetadata
.asBuilder(resolver)
.geoReference(null)
.boundingBox(null)
.build();
Modifier and Type | Class and Description |
---|---|
static class |
ALfnCoverageMetadata.AssetInfo
A reference to an asset with an associated status.
|
static class |
ALfnCoverageMetadata.Builder<B extends ALfnCoverageMetadata.Builder<B>>
Abstract builder for coverage metadata.
|
ISO19115_GCO_XML_NAMESPACE, ISO19115_GMD_XML_NAMESPACE, LTS_XML_NAMESPACE, NEW_UPDATE_SEQUENCE, XLINK_XML_NAMESPACE
Modifier and Type | Method and Description |
---|---|
abstract ALfnCoverageMetadata.Builder<?> |
asBuilder()
Creates a new builder from this resource metadata.
|
abstract ALfnCoverageMetadata.Builder<?> |
asBuilder(ILfnResourceMetadataResolver aResolver)
Creates a new builder from this coverage metadata using a given resolver.
|
boolean |
equals(Object aObject) |
List<ALfnCoverageMetadata.AssetInfo> |
getAssetInfos()
Gets the list of asset infos of this coverage.
|
ILcdBounds |
getBoundingBox()
Gets the bounding box of this coverage.
|
ILcdBounds |
getBounds()
Returns the bounding box of this coverage.
|
ELfnDataDensity |
getDataDensity()
Returns what the density of the data in the coverage is.
|
List<TLcdSLDFeatureTypeStyle> |
getFeatureTypeStyles()
Gets the SLD feature type styles to be used for the visualization of this coverage.
|
String |
getFormat()
Gets the format of this coverage.
|
String |
getFormatVersion()
Gets the format version of this coverage.
|
ILcdGeoReference |
getGeoReference()
Gets the geographic reference of this coverage.
|
long |
getLevel0ColumnCount()
Gets the number of columns at level 0 of this coverage.
|
long |
getLevel0RowCount()
Gets the number of rows at level 0 of this coverage.
|
String |
getMessageDigestAlgorithm()
Gets the message digest algorithm of this coverage, possibly
null . |
List<Integer> |
getScaleDenominators()
Gets the denominators of the scales at which this coverage will typically be viewed.
|
ELfnDataType |
getType()
Gets the type of this coverage.
|
int |
hashCode() |
boolean |
isAssetSourcesInTileStore()
Tells whether or not the asset sources are in the Tile Store.
|
boolean |
isIgnoreNonFatalFailures()
Indicates whether non-fatal failures can be ignored during the fusion process.
|
accept, getAbstract, getGlobalUpdateSequence, getId, getISO19115Metadata, getName, getUpdateSequence, toString
public ELfnDataType getType()
OGC filter property XPath: lts:Type
null
when isAssetSourcesInTileStore()
is true
.
In this case the coverage only contains the raw asset data but has no tile structure.
Parameters such as format, geo reference then become irrelevant (although they may still be defined).null
when isAssetSourcesInTileStore()
is false
, possibly null
when isAssetSourcesInTileStore()
is true
public boolean isAssetSourcesInTileStore()
false
.
When true
, fusion will copy the asset sources into the Tile Store for all assets of this coverage.
Such a coverage does not need to have a tile structure.
Both the WMS "GetMap" and "GetFeatureInfo" requests will be served using the asset sources.
When a coverage has both asset sources and a tile structure,
the image tiles will be used to serve WMS "GetMap" requests while the asset data will be used to serve WMS "GetFeatureInfo" requests.
When this method returns false
, this coverage must have a tile structure.
public List<TLcdSLDFeatureTypeStyle> getFeatureTypeStyles()
Gets the SLD feature type styles to be used for the visualization of this coverage.
The SLD feature type styles are possibly empty, but never null
.
The default is an empty list.
null
TLfnVectorCoverageMetadata.getFilters()
public long getLevel0RowCount()
[1..15]
, although this is not enforced.
OGC filter property XPath: lts:Level0RowCount
public long getLevel0ColumnCount()
[1..15]
, although this is not enforced.
OGC filter property XPath: lts:Level0ColumnCount
public ILcdBounds getBoundingBox()
OGC filter property XPath: lts:BoundingBox
This property can be used with the OGC filter bounding box operator
null
public ILcdGeoReference getGeoReference()
OGC filter property XPath: lts:GeoReference
null
public String getFormat()
OGC filter property XPath: lts:Format
null
public String getFormatVersion()
null
indicates that a format version is irrelevant for this coverage's format.
For the built-in formats, only the Vector Tile format currently has multiple versions, 0 and 1.0. The main difference between the two versions is that version 1.0 supports text features. When backwards compatibility is not required, always use the latest version.
OGC filter property XPath: lts:FormatVersion
null
public List<ALfnCoverageMetadata.AssetInfo> getAssetInfos()
OGC filter property XPath: lts:AssetInfo/
assetInfoPropertyName
See ALfnCoverageMetadata.AssetInfo
for the asset info property names.
null
public List<Integer> getScaleDenominators()
1:denominator
.
The scale is expressed as the ratio between a distance on the displayed map and the corresponding distance
in the real geographic environment.
For instance, a scale of 1:1000
means that 1 centimeter on the map corresponds
to 1000 centimeters in the real geographic context represented by the map.
The returned list is immutable thus thread-safe.
OGC filter property XPath: lts:ScaleDenominator
The scale denominators are optional, and may be empty. When present, they may be used by client applications as hints as to which scales the coverage is best viewed at. For example the "CTRL-mousewheel" zoom controller uses it to snap-zoom.
It is not required that the scale denominators are related to its levels, although this will often be the case. For vector data, it is possible to use the scale denominators to "override" the default visualization levels with. SeeTLfnGXYVectorLayer.setUseCoverageScalesAsLevelScales(boolean)
.null
public ELfnDataDensity getDataDensity()
ELfnDataDensity.OVERVIEW
for TLfnVectorCoverageMetadata
and null
for others.null
ELfnDataDensity
public ILcdBounds getBounds()
getBoundingBox()
, it exists solely to implement the ILcdBounded
interface.getBounds
in interface ILcdBounded
null
getBoundingBox()
public String getMessageDigestAlgorithm()
null
. The message digest algorithm may be used
to sign each tile, which can be used on the server to do corruption checks on a coverage on a per-tile basis.
An example of a message digest algorithm is "MD5"
. A message digest algorithm is valid if
MessageDigest.getInstance(String)
returns a valid message digest instance.
Note that setting a message digest algorithm will in not in itself trigger the actual signing of tiles. In
order to perform signing, you should use the TLfnDigestTileStore
decorator.null
public boolean isIgnoreNonFatalFailures()
true
: the fusion process may continue when certain failures occur, for example missing or corrupt source datafalse
: the fusion process must immediately abortBy default, this is false
.
If set to true
, the fusion processing engine will report these non-fatal
failures for inspection.
true
if non-fatal failures may be ignored, false
if the fusion process
should failpublic boolean equals(Object aObject)
equals
in class ALfnResourceMetadata
public int hashCode()
hashCode
in class ALfnResourceMetadata
public abstract ALfnCoverageMetadata.Builder<?> asBuilder()
ALfnResourceMetadata
asBuilder
in class ALfnResourceMetadata
public abstract ALfnCoverageMetadata.Builder<?> asBuilder(ILfnResourceMetadataResolver aResolver)
null
, the resolver is used to resolve asset metadata when computing a coverage's auto-defaults.
See ALfnCoverageMetadata.Builder
for the uses of a resolver.aResolver
- a resolver to resolve the asset metadata for computing auto-defaults, which may be null