ol
Version:
OpenLayers mapping library
503 lines • 16 kB
TypeScript
/**
* @param {string} token The access token to parse.
* @return {AccessTokenClaims} The parsed token claims.
*/
export function parseTokenClaims(token: string): AccessTokenClaims;
/**
* Gets a CRS identifier accepted by Sentinel Hub.
* See https://docs.sentinel-hub.com/api/latest/api/process/crs/.
*
* @param {import("../proj/Projection.js").default} projection The projection.
* @return {string} The projection identifier accepted by Sentinel Hub.
*/
export function getProjectionIdentifier(projection: import("../proj/Projection.js").default): string;
/**
* This is intended to work with named functions, anonymous functions, arrow functions, and object methods.
* Due to how the Evalscript is executed, these are serialized as function expressions using `var`.
*
* @param {string} name The name of the function.
* @param {Function|undefined} func The function to serialize.
* @return {string} The serialized function.
*/
export function serializeFunction(name: string, func: Function | undefined): string;
export default SentinelHub;
export type AuthConfig = {
/**
* The URL to get the authentication token.
*/
tokenUrl?: string | undefined;
/**
* The client ID.
*/
clientId: string;
/**
* The client secret.
*/
clientSecret: string;
};
export type AccessTokenClaims = {
/**
* The expiration time of the token (in seconds).
*/
exp: number;
};
export type Evalscript = {
/**
* The setup function.
*/
setup: Setup;
/**
* The function to transform input samples into output values.
*/
evaluatePixel: EvaluatePixel;
/**
* Optional function to adjust the output bands.
*/
updateOutput?: UpdateOutput | undefined;
/**
* Optional function to update the output metadata.
*/
updateOutputMetadata?: UpdateOutputMetadata | undefined;
/**
* Optional function called before processing.
*/
preProcessScenes?: Collections | undefined;
/**
* The Evalscript version.
*/
version?: string | undefined;
};
export type Setup = () => SetupResult;
export type EvaluatePixel = (arg0: Sample | Array<Sample>, arg1: Scenes, arg2: InputMetadata, arg3: CustomData, arg4: OutputMetadata) => OutputValues | Array<number> | void;
export type UpdateOutput = (arg0: {
[x: string]: UpdatedOutputDescription;
}) => void;
export type UpdateOutputMetadata = (arg0: Scenes, arg1: InputMetadata, arg2: OutputMetadata) => void;
export type SetupResult = {
/**
* Description of the input data.
*/
input: Array<string> | Array<InputDescription>;
/**
* Description of the output data.
*/
output: OutputDescription | Array<OutputDescription>;
/**
* Control how samples from input scenes are composed.
*/
mosaicking?: "SIMPLE" | "ORBIT" | "TILE" | undefined;
};
export type InputDescription = {
/**
* Input band identifiers.
*/
bands: Array<string>;
/**
* Input band units.
*/
units?: string | string[] | undefined;
/**
* Properties to include in the input metadata.
*/
metadata?: string[] | undefined;
};
export type OutputDescription = {
/**
* Output identifier.
*/
id?: string | undefined;
/**
* Number of output bands.
*/
bands: number;
/**
* Output sample type.
*/
sampleType?: SampleType | undefined;
/**
* Output nodata value.
*/
nodataValue?: number | undefined;
};
export type UpdatedOutputDescription = {
/**
* Number of output bands.
*/
bands: number;
};
export type SampleType = "INT8" | "UINT8" | "INT16" | "UINT16" | "FLOAT32" | "AUTO";
export type Sample = {
[x: string]: number;
};
export type Collections = {
/**
* For 'ORBIT' mosaicking, this will be the start of the search interval.
*/
from?: string | undefined;
/**
* For 'ORBIT' mosaicking, this will be the end of the search interval.
*/
to?: string | undefined;
/**
* The scenes in the collection.
*/
scenes: Scenes;
};
export type Scenes = {
/**
* Information about scenes included in the tile when 'mosaicking' is 'ORBIT'.
*/
orbit?: Orbit[] | undefined;
/**
* Information about scenes included in the tile when 'mosaicking' is 'TILE'.
*/
tiles?: Tile[] | undefined;
};
export type Orbit = {
/**
* The earliest date for all scenes included in the tile.
*/
dateFrom: string;
/**
* The latest date for scenes included in the tile.
*/
dateTo: string;
/**
* Metadata for each tile.
*/
tiles: any[];
};
export type Tile = {
/**
* The date of scene used in the tile.
*/
date: string;
/**
* The estimated percentage of pixels obscured by clouds in the scene.
*/
cloudCoverage: number;
/**
* The path to the data in storage.
*/
dataPath: string;
/**
* The internal identifier for the scene.
*/
shId: number;
};
export type InputMetadata = {
/**
* The version of the service used for processing.
*/
serviceVersion: string;
/**
* The factor used to convert digital number (DN) values to reflectance.
*/
normalizationFactor: number;
};
export type CustomData = {
[x: string]: unknown;
};
export type OutputMetadata = {
/**
* Arbitrary user data.
*/
userData: any;
};
export type OutputValues = {
[x: string]: number[];
};
export type ProcessRequest = {
/**
* Input data configuration.
*/
input: ProcessRequestInput;
/**
* The Evalscript used for processing.
*/
evalscript: string;
/**
* The output configuration.
*/
output?: ProcessRequestOutput | undefined;
};
export type ProcessRequestInput = {
/**
* The bounding box of the input data.
*/
bounds: ProcessRequestInputBounds;
/**
* The intput data.
*/
data: Array<ProcessRequestInputDataItem>;
};
export type ProcessRequestInputDataItem = {
/**
* The type of the input data.
*/
type?: string | undefined;
/**
* The identifier of the input data.
*/
id?: string | undefined;
/**
* The filter to apply to the input data.
*/
dataFilter?: DataFilter | undefined;
/**
* The processing to apply to the input data.
*/
processing?: {
[x: string]: unknown;
} | undefined;
};
export type DataFilter = {
/**
* The data time range.
*/
timeRange?: TimeRange | undefined;
/**
* The maximum cloud coverage (0-100).
*/
maxCloudCoverage?: number | undefined;
};
export type TimeRange = {
/**
* The start time (inclusive).
*/
from?: string | undefined;
/**
* The end time (inclusive).
*/
to?: string | undefined;
};
export type ProcessRequestInputBounds = {
/**
* The bounding box of the input data.
*/
bbox?: number[] | undefined;
/**
* The properties of the bounding box.
*/
properties?: ProcessRequestInputBoundsProperties | undefined;
/**
* The geometry of the bounding box.
*/
geometry?: import("geojson").Geometry | undefined;
};
export type ProcessRequestInputBoundsProperties = {
/**
* The coordinate reference system of the bounding box.
*/
crs: string;
};
export type ProcessRequestOutput = {
/**
* Image width in pixels.
*/
width?: number | undefined;
/**
* Image height in pixels.
*/
height?: number | undefined;
/**
* Spatial resolution in the x direction.
*/
resx?: number | undefined;
/**
* Spatial resolution in the y direction.
*/
resy?: number | undefined;
/**
* Response configuration.
*/
responses?: ProcessRequestOutputResponse[] | undefined;
};
export type ProcessRequestOutputResponse = {
/**
* Identifier used to connect results to outputs from the setup.
*/
identifier?: string | undefined;
/**
* Response format.
*/
format?: ProcessRequestOutputFormat | undefined;
};
export type ProcessRequestOutputFormat = {
/**
* The output format type.
*/
type?: string | undefined;
};
export type Options = {
/**
* The authentication configuration with `clientId` and `clientSecret` or an access token.
* See [Sentinel Hub authentication](https://docs.sentinel-hub.com/api/latest/api/overview/authentication/)
* for details. If not provided in the constructor, the source will not be rendered until {@link module :ol/source/SentinelHub~SentinelHub#setAuth}is called.
*/
auth?: string | AuthConfig | undefined;
/**
* The input data configuration. If not provided in the constructor,
* the source will not be rendered until {@link module :ol/source/SentinelHub~SentinelHub#setData} is called.
*/
data?: ProcessRequestInputDataItem[] | undefined;
/**
* The process applied to the input data. If not provided in the constructor,
* the source will not be rendered until {@link module :ol/source/SentinelHub~SentinelHub#setEvalscript} is called. See the
* `setEvalscript` documentation for details on the restrictions when passing process functions.
*/
evalscript?: string | Evalscript | undefined;
/**
* The pixel width and height of the source tiles.
*/
tileSize?: number | import("../size.js").Size | undefined;
/**
* The Sentinel Hub Processing API URL.
*/
url?: string | undefined;
/**
* Projection. Default is the view projection.
*/
projection?: import("../proj.js").ProjectionLike;
/**
* Allow the attributions to be collapsed.
*/
attributionsCollapsible?: boolean | undefined;
/**
* Use interpolated values when resampling. By default,
* linear interpolation is used when resampling. Set to false to use the nearest neighbor instead.
*/
interpolate?: boolean | undefined;
/**
* Wrap the world horizontally.
*/
wrapX?: boolean | undefined;
/**
* Duration of the opacity transition for rendering.
* To disable the opacity transition, pass `transition: 0`.
*/
transition?: number | undefined;
};
/**
* @typedef {Object} Options
* @property {AuthConfig|string} [auth] The authentication configuration with `clientId` and `clientSecret` or an access token.
* See [Sentinel Hub authentication](https://docs.sentinel-hub.com/api/latest/api/overview/authentication/)
* for details. If not provided in the constructor, the source will not be rendered until {@link module:ol/source/SentinelHub~SentinelHub#setAuth}
* is called.
* @property {Array<ProcessRequestInputDataItem>} [data] The input data configuration. If not provided in the constructor,
* the source will not be rendered until {@link module:ol/source/SentinelHub~SentinelHub#setData} is called.
* @property {Evalscript|string} [evalscript] The process applied to the input data. If not provided in the constructor,
* the source will not be rendered until {@link module:ol/source/SentinelHub~SentinelHub#setEvalscript} is called. See the
* `setEvalscript` documentation for details on the restrictions when passing process functions.
* @property {number|import("../size.js").Size} [tileSize=[512, 512]] The pixel width and height of the source tiles.
* @property {string} [url='https://services.sentinel-hub.com/api/v1/process'] The Sentinel Hub Processing API URL.
* @property {import("../proj.js").ProjectionLike} [projection] Projection. Default is the view projection.
* @property {boolean} [attributionsCollapsible=true] Allow the attributions to be collapsed.
* @property {boolean} [interpolate=true] Use interpolated values when resampling. By default,
* linear interpolation is used when resampling. Set to false to use the nearest neighbor instead.
* @property {boolean} [wrapX=true] Wrap the world horizontally.
* @property {number} [transition] Duration of the opacity transition for rendering.
* To disable the opacity transition, pass `transition: 0`.
*/
/**
* @classdesc
* A tile source that generates tiles using the Sentinel Hub [Processing API](https://docs.sentinel-hub.com/api/latest/api/process/).
* All of the constructor options are optional, however the source will not be ready for rendering until the `auth`, `data`,
* and `evalscript` properties are provided. These can be set after construction with the {@link module:ol/source/SentinelHub~SentinelHub#setAuth},
* {@link module:ol/source/SentinelHub~SentinelHub#setData}, and {@link module:ol/source/SentinelHub~SentinelHub#setEvalscript}
* methods.
*
* If there are errors while configuring the source or fetching an access token, the `change` event will be fired and the
* source state will be set to `error`. See the {@link module:ol/source/SentinelHub~SentinelHub#getError} method for
* details on handling these errors.
* @api
*/
declare class SentinelHub extends DataTileSource<import("../DataTile.js").default> {
/**
* @param {Options} [options] Sentinel Hub options.
*/
constructor(options?: Options);
/**
* @type {Error|null}
*/
error_: Error | null;
/**
* @type {string}
* @private
*/
private evalscript_;
/**
* @type {Array<ProcessRequestInputDataItem>|null}
* @private
*/
private inputData_;
/**
* @type {string}
* @private
*/
private processUrl_;
/**
* @type {string}
* @private
*/
private token_;
/**
* @type {ReturnType<typeof setTimeout>}
* @private
*/
private tokenRenewalId_;
/**
* Set the authentication configuration for the source (if not provided in the constructor).
* If an object with `clientId` and `clientSecret` is provided, an access token will be fetched
* and used with processing requests. Alternatively, an access token can be supplied directly.
*
* @param {AuthConfig|string} auth The auth config or access token.
* @api
*/
setAuth(auth: AuthConfig | string): Promise<void>;
/**
* Set or update the input data used.
*
* @param {Array<ProcessRequestInputDataItem>} data The input data configuration.
* @api
*/
setData(data: Array<ProcessRequestInputDataItem>): void;
/**
* Set or update the Evalscript used to process the data. Either a process object or a string
* Evalscript can be provided. If a process object is provided, it will be serialized to produce the
* Evalscript string. Because these functions will be serialized and executed by the Processing API,
* they cannot refer to other variables or functions that are not provided by the Processing API
* context.
*
* @param {Evalscript|string} evalscript The process to apply to the input data.
* @api
*/
setEvalscript(evalscript: Evalscript | string): void;
fireWhenReady_(): void;
/**
* @param {number} z The z tile index.
* @param {number} x The x tile index.
* @param {number} y The y tile index.
* @param {number} attempt The attempt number (starting with 1). Incremented with retries.
* @return {Promise<import('../DataTile.js').Data>} The composed tile data.
* @private
*/
private loadTile_;
/**
* When the source state is `error`, use this function to get more information about the error.
* To debug a faulty configuration, you may want to use a listener like this:
* ```js
* source.on('change', () => {
* if (source.getState() === 'error') {
* console.error(source.getError());
* }
* });
* ```
*
* @return {Error|null} A source loading error.
* @api
*/
getError(): Error | null;
}
import DataTileSource from './DataTile.js';
//# sourceMappingURL=SentinelHub.d.ts.map