import type Extent from "../../geometry/Extent.js"; import type SpatialReference from "../../geometry/SpatialReference.js"; import type Field from "../support/Field.js"; import type FieldsIndex from "../support/FieldsIndex.js"; import type MosaicRule from "../support/MosaicRule.js"; import type MultidimensionalSubset from "../support/MultidimensionalSubset.js"; import type RasterFunction from "../support/RasterFunction.js"; import type RasterInfo from "../support/RasterInfo.js"; import type FeatureSet from "../../rest/support/FeatureSet.js"; import type FindImagesParameters from "../../rest/support/FindImagesParameters.js"; import type FindImagesResult from "../../rest/support/FindImagesResult.js"; import type ImageAngleParameters from "../../rest/support/ImageAngleParameters.js"; import type ImageAngleResult from "../../rest/support/ImageAngleResult.js"; import type ImageAreaParameters from "../../rest/support/ImageAreaParameters.js"; import type ImageAreaResult from "../../rest/support/ImageAreaResult.js"; import type ImageBoundaryParameters from "../../rest/support/ImageBoundaryParameters.js"; import type ImageBoundaryResult from "../../rest/support/ImageBoundaryResult.js"; import type ImageDistanceParameters from "../../rest/support/ImageDistanceParameters.js"; import type ImageDistanceResult from "../../rest/support/ImageDistanceResult.js"; import type ImageGPSInfoResult from "../../rest/support/ImageGPSInfoResult.js"; import type ImageHeightParameters from "../../rest/support/ImageHeightParameters.js"; import type ImageHeightResult from "../../rest/support/ImageHeightResult.js"; import type ImageHistogramParameters from "../../rest/support/ImageHistogramParameters.js"; import type ImageIdentifyParameters from "../../rest/support/ImageIdentifyParameters.js"; import type ImageIdentifyResult from "../../rest/support/ImageIdentifyResult.js"; import type ImagePixelLocationParameters from "../../rest/support/ImagePixelLocationParameters.js"; import type ImagePixelLocationResult from "../../rest/support/ImagePixelLocationResult.js"; import type ImagePointParameters from "../../rest/support/ImagePointParameters.js"; import type ImagePointResult from "../../rest/support/ImagePointResult.js"; import type ImageSampleParameters from "../../rest/support/ImageSampleParameters.js"; import type ImageSampleResult from "../../rest/support/ImageSampleResult.js"; import type ImageToMapMultirayParameters from "../../rest/support/ImageToMapMultirayParameters.js"; import type ImageToMapParameters from "../../rest/support/ImageToMapParameters.js"; import type ImageUrlParameters from "../../rest/support/ImageUrlParameters.js"; import type ImageUrlResult from "../../rest/support/ImageUrlResult.js"; import type ImageVolumeParameters from "../../rest/support/ImageVolumeParameters.js"; import type ImageVolumeResult from "../../rest/support/ImageVolumeResult.js"; import type MapToImageParameters from "../../rest/support/MapToImageParameters.js"; import type MeasureAreaFromImageResult from "../../rest/support/MeasureAreaFromImageResult.js"; import type MeasureFromImageParameters from "../../rest/support/MeasureFromImageParameters.js"; import type MeasureLengthFromImageResult from "../../rest/support/MeasureLengthFromImageResult.js"; import type { AbortOptions } from "../../core/promiseUtils.js"; import type { GeometryUnion } from "../../geometry/types.js"; import type { OperationCapabilities, QueryCapabilities } from "../types.js"; import type { DynamicFetchRasterOptions, RasterInterpolation, RasterNoDataInterpretation, RasterPixelType, RasterFormats, PixelData, RasterMultidimensionalInfo, ServiceRasterFunctionInfo } from "../raster/types.js"; import type { RasterFunctionProperties } from "../support/RasterFunction.js"; import type { RasterRendererUnion } from "../../renderers/support/raster/types.js"; import type { RequestOptions } from "../../request/types.js"; import type { ImageServiceStatisticsHistogramsResult, ImageServiceHistogramsResult } from "../../rest/imageService.js"; import type { FindImagesParametersProperties } from "../../rest/support/FindImagesParameters.js"; import type { ImageAngleParametersProperties } from "../../rest/support/ImageAngleParameters.js"; import type { ImageAreaParametersProperties } from "../../rest/support/ImageAreaParameters.js"; import type { ImageBoundaryParametersProperties } from "../../rest/support/ImageBoundaryParameters.js"; import type { ImageDistanceParametersProperties } from "../../rest/support/ImageDistanceParameters.js"; import type { ImageGPSInfoParametersProperties } from "../../rest/support/ImageGPSInfoParameters.js"; import type { ImageHeightParametersProperties } from "../../rest/support/ImageHeightParameters.js"; import type { ImageHistogramParametersProperties } from "../../rest/support/ImageHistogramParameters.js"; import type { ImageIdentifyParametersProperties } from "../../rest/support/ImageIdentifyParameters.js"; import type { ImagePixelLocationParametersProperties } from "../../rest/support/ImagePixelLocationParameters.js"; import type { ImagePointParametersProperties } from "../../rest/support/ImagePointParameters.js"; import type { ImageSampleParametersProperties } from "../../rest/support/ImageSampleParameters.js"; import type { ImageToMapMultirayParametersProperties } from "../../rest/support/ImageToMapMultirayParameters.js"; import type { ImageUrlParametersProperties } from "../../rest/support/ImageUrlParameters.js"; import type { ImageVolumeParametersProperties } from "../../rest/support/ImageVolumeParameters.js"; import type { MapToImageParametersProperties } from "../../rest/support/MapToImageParameters.js"; import type { QueryProperties } from "../../rest/support/Query.js"; import type { MosaicRuleProperties } from "../support/MosaicRule.js"; import type { MultidimensionalSubsetProperties } from "../support/MultidimensionalSubset.js"; import type { VectorFieldRendererProperties } from "../../renderers/VectorFieldRenderer.js"; import type { UniqueValueRendererProperties } from "../../renderers/UniqueValueRenderer.js"; import type { RasterStretchRendererProperties } from "../../renderers/RasterStretchRenderer.js"; import type { RasterShadedReliefRendererProperties } from "../../renderers/RasterShadedReliefRenderer.js"; import type { RasterColormapRendererProperties } from "../../renderers/RasterColormapRenderer.js"; import type { FlowRendererProperties } from "../../renderers/FlowRenderer.js"; import type { ClassBreaksRendererProperties } from "../../renderers/ClassBreaksRenderer.js"; import type { RasterInfoProperties } from "../support/RasterInfo.js"; export interface ArcGISImageServiceProperties extends Partial> { /** Defines how overlapping images should be mosaicked. */ mosaicRule?: MosaicRuleProperties; /** * Represents a multidimensional subset of raster data. This includes subsets of both variables and dimensions. When the `multidimensionalSubset` is defined on * a layer, the [MosaicRule.multidimensionalDefinition](https://developers.arcgis.com/javascript/latest/references/core/layers/support/MosaicRule/#multidimensionalDefinition) must be within the defined * multidimensionalSubset, otherwise nothing will be displayed. * * @since 4.25 * @see [ImageryLayer - working with multidimensional raster data](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#multidimensionaldata) * @see [Sample - Work with pixelFilter in an ImageryLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-pixelvalues/) * @example * // set a multi dimensional subset on the imagery layer * // so that users can only access sea temperature data in the atlantic ocean * // between April 7 - 18, 2014 and at depths between -500 - 0. * const multidimensionalSubset = new MultidimensionalSubset({ * // area over atlantic ocean * areaOfInterest: new Extent({ * type: "extent", * xmax: 3041935.5384527617, * xmin: -10166382.94922227, * ymax: 12406741.274438996, * ymin: -5908793.695137047, * spatialReference: { * wkid: 102100 * } * }), * subsetDefinitions: [ * { * variableName: "water_temp", * dimensionName: "StdTime", * values: [1396828800000, 1397779200000], // 4/7 - 4/18 * isSlice: false * }, * { * variableName: "water_temp", * dimensionName: "StdZ", * values: [-500, 0], * isSlice: false * } * ], * }); * layer.multidimensionalSubset = multidimensionalSubset; */ multidimensionalSubset?: MultidimensionalSubsetProperties | null; /** * Specifies the rule for how the requested image should be processed. When rasterFunction applied, the server returns an updated service * information that reflects a custom processing as defined by the raster function. * * Use helper functions from the [rasterFunctionUtils](https://developers.arcgis.com/javascript/latest/references/core/layers/support/rasterFunctionUtils/) module when creating raster functions that apply to ImageryLayers. * * @since 4.27 * @see [Raster functions - ArcGIS REST API](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm) * @example * // apply NDVI and colormap raster function to an imagery layer * // use rasterFunctionUtils convenience methods to create raster functions * const ndvi = rasterFunctionUtils.bandArithmeticNDVI({ * nirBandId: 4, * redBandId: 3, * scientificOutput: false * }); * * const colormap = rasterFunctionUtils.colormap({ * colorRampName: "NDVI3", * raster: ndvi * }); * layer.rasterFunction = colormap; * @example * const stretchFunction = new RasterFunction({ * functionName: "Stretch", * functionArguments: { * StretchType: 5, // (0 = None, 3 = StandardDeviation, 4 = Histogram Equalization, 5 = MinMax, 6 = PercentClip, 9 = Sigmoid) * Min: 0, * Max: 255, * Raster: "$$" // $$(default) refers to the entire image service, $2 refers to the second image of the image service * }, * outputPixelType: "u8" * }); * * const colorFunction = new RasterFunction({ * functionName: "Colormap", * functionArguments: { * ColorrampName: "Temperature", // other examples: "Slope", "Surface", "Blue Bright".... * Raster: stretchFunction // chaining multiple raster functions * } * }); * * const imageryLayer = new ImageryLayer({ * url: * "https://sampleserver6.arcgisonline.com/arcgis/rest/services/ScientificData/SeaTemperature/ImageServer" * }); * * imageryLayer.rasterFunction = colorFunction; */ rasterFunction?: RasterFunctionProperties | null; /** * Returns raster function information for the image services, * including the name, description, help, function type, and a thumbnail of pre-configured raster function templates. * * @since 4.22 */ rasterFunctionInfos?: ServiceRasterFunctionInfo[] | null; /** * The renderer assigned to the layer. The renderer defines how to visualize pixels in the imagery layer. * Depending on the renderer type, the pixels may be [stretched](https://developers.arcgis.com/javascript/latest/references/core/renderers/RasterStretchRenderer/) * across the color ramp, [classified](https://developers.arcgis.com/javascript/latest/references/core/renderers/ClassBreaksRenderer/), * have [different symbols](https://developers.arcgis.com/javascript/latest/references/core/renderers/UniqueValueRenderer/) based on values, or show [shaded reliefs](https://developers.arcgis.com/javascript/latest/references/core/renderers/RasterShadedReliefRenderer/). * * If both renderer and [pixelFilter](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#pixelFilter) is applied to an ImageryLayer then pixelFilter will override * the renderer. * * > [!WARNING] * > * > **Known Limitations** * > * > Currently, the [VectorFieldRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/VectorFieldRenderer/) is not supported in 3D [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). * * @since 4.11 * @see [Sample - Intro to ImageryTileLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagerytilelayer/) * @see [Sample - ImageryTileLayer - shaded relief renderer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-renderer/) */ renderer?: ((ClassBreaksRendererProperties & { type: "class-breaks" }) | (FlowRendererProperties & { type: "flow" }) | (RasterColormapRendererProperties & { type: "raster-colormap" }) | (RasterShadedReliefRendererProperties & { type: "raster-shaded-relief" }) | (RasterStretchRendererProperties & { type: "raster-stretch" }) | (UniqueValueRendererProperties & { type: "unique-value" }) | (VectorFieldRendererProperties & { type: "vector-field" })) | null; /** * Source raster information of the image service. The layer must be * [ImageryLayer.loaded](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#loaded) before serviceRasterInfo can be accessed. * * @since 4.12 * @see [Raster info](https://developers.arcgis.com/rest/services-reference/raster-info.htm) */ serviceRasterInfo?: RasterInfoProperties; } export type SourceType = "mosaic-dataset" | "raster-dataset"; /** ArcGISImageService is a mixin that adds a set of properties and methods for managing image services for [ImageryLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/). */ export abstract class ArcGISImageService { constructor(...args: any[]); /** * Defines a band combination using 0-based band indexes. * Set the `bandIds` to the desired band when applying a [RasterStretchRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/RasterStretchRenderer/) to the layer * to get the correct result. * * @since 4.19 */ accessor bandIds: number[] | null | undefined; /** * Describes the layer's supported capabilities. * * @since 4.16 */ get capabilities(): ImageryLayerCapabilities; /** * The compression quality value. Controls how much loss the image will be subjected to by the compression algorithm. * Valid value ranges of compression quality are from 0 to 100. Only valid when using `jpg` or `jpgpng` [image format](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#format). */ accessor compressionQuality: number | null | undefined; /** * Controls the tolerance of the lerc compression algorithm. * The tolerance defines the maximum possible error of pixel values in the compressed image. It's a double value. * * @default 0.01 */ accessor compressionTolerance: number; /** The copyright text as defined by the service. */ accessor copyright: string | null | undefined; /** * Default mosaic rule of the image service. * * @since 4.28 */ get defaultMosaicRule(): MosaicRule | null | undefined; /** * The SQL where clause used to filter rasters. Only the rasters that satisfy the definition * expression are displayed in the [View](https://developers.arcgis.com/javascript/latest/references/core/views/View/). This property overrides * the [mosaicRule's](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#mosaicRule) [MosaicRule.where](https://developers.arcgis.com/javascript/latest/references/core/layers/support/MosaicRule/#where) * property if both properties are set on the layer. */ accessor definitionExpression: string | null | undefined; /** * An array of fields in the layer. Each field represents an attribute * that may contain a value for each raster in the layer. * * @see [Mosaic dataset attribute table](https://pro.arcgis.com/en/pro-app/latest/help/data/imagery/mosaic-dataset-attribute-table-pro-.htm) */ get fields(): Field[]; /** * A convenient property that can be used to make case-insensitive lookups for a [field](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#fields) by name. * This property is only available after the ImageryLayer has been [loaded](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#loadStatus). * * @since 4.21 * @see [ImageryLayer.load()](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#load) * @see [fields](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#fields) * @example * // lookup a field by name, name is case-insensitive * const fieldsIndex = layer.fieldsIndex.get("OBjecTID"); * * // if there's a field by that name, print it to the console * if (fieldsIndex) { * console.log("fieldsIndex: ", fieldsIndex); * } */ get fieldsIndex(): FieldsIndex | null | undefined; /** The format of the exported image. */ accessor format: RasterFormats; /** * Indicates if the layer has [multidimensionalInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#multidimensionalInfo). * * @default false */ get hasMultidimensions(): boolean; /** * Indicates the maximum height of the image exported by the service. * * @default 4100 * @since 4.4 */ accessor imageMaxHeight: number; /** * Indicates the maximum width of the image exported by the service. * * @default 4100 * @since 4.4 */ accessor imageMaxWidth: number; /** * Defines how to interpolate pixel values. * * @since 4.12 */ accessor interpolation: RasterInterpolation; /** Defines how overlapping images should be mosaicked. */ get mosaicRule(): MosaicRule; set mosaicRule(value: MosaicRuleProperties); /** * The multidimensional information associated with the layer if the layer's [hasMultidimensions](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#hasMultidimensions) property * is `true`. If defined, multidimensional information contains data in multiple dimensions like time and depth/height, and contains multiple variables. * Defining slices of particular dimensions in the layer is handled with the * [MosaicRule.multidimensionalDefinition](https://developers.arcgis.com/javascript/latest/references/core/layers/support/MosaicRule/#multidimensionalDefinition) property of the [mosaicRule](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#mosaicRule). * * @see [ImageryLayer - working with multidimensional raster data](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#multidimensionaldata) * @see [Sample - Work with pixelFilter in an ImageryLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-pixelvalues/) */ get multidimensionalInfo(): RasterMultidimensionalInfo | null | undefined; /** * Represents a multidimensional subset of raster data. This includes subsets of both variables and dimensions. When the `multidimensionalSubset` is defined on * a layer, the [MosaicRule.multidimensionalDefinition](https://developers.arcgis.com/javascript/latest/references/core/layers/support/MosaicRule/#multidimensionalDefinition) must be within the defined * multidimensionalSubset, otherwise nothing will be displayed. * * @since 4.25 * @see [ImageryLayer - working with multidimensional raster data](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#multidimensionaldata) * @see [Sample - Work with pixelFilter in an ImageryLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-pixelvalues/) * @example * // set a multi dimensional subset on the imagery layer * // so that users can only access sea temperature data in the atlantic ocean * // between April 7 - 18, 2014 and at depths between -500 - 0. * const multidimensionalSubset = new MultidimensionalSubset({ * // area over atlantic ocean * areaOfInterest: new Extent({ * type: "extent", * xmax: 3041935.5384527617, * xmin: -10166382.94922227, * ymax: 12406741.274438996, * ymin: -5908793.695137047, * spatialReference: { * wkid: 102100 * } * }), * subsetDefinitions: [ * { * variableName: "water_temp", * dimensionName: "StdTime", * values: [1396828800000, 1397779200000], // 4/7 - 4/18 * isSlice: false * }, * { * variableName: "water_temp", * dimensionName: "StdZ", * values: [-500, 0], * isSlice: false * } * ], * }); * layer.multidimensionalSubset = multidimensionalSubset; */ get multidimensionalSubset(): MultidimensionalSubset | null | undefined; set multidimensionalSubset(value: MultidimensionalSubsetProperties | null | undefined); /** * The pixel value representing no available information. * Can be a number (same value for all bands) or array (specific value for each band). * * @since 4.12 */ accessor noData: number | number[] | null | undefined; /** * Interpretation of the [noData](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#noData) setting. * * Value | Description | * ----- | ----------- | * any | Pixel is transparent if any band matches `noData` value. * all | Pixel is transparent only if all bands match `noData` value. * * @since 4.12 */ accessor noDataInterpretation: RasterNoDataInterpretation | null | undefined; /** * The name of an `oid` [field](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#fields) containing * a unique value or identifier for each raster in the layer. * * @see [fields](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#fields) */ get objectIdField(): string; /** * A function that processes [ImageryLayerView.pixelData](https://developers.arcgis.com/javascript/latest/references/core/views/layers/ImageryLayerView/#pixelData). * The `pixelData` object contains a * [PixelBlock](https://developers.arcgis.com/javascript/latest/references/core/layers/support/PixelBlock/) property that gives * you access to all of the pixels in the raster on the client. * * Inside the `pixelFilter` you may loop through all the * [PixelBlock.pixels](https://developers.arcgis.com/javascript/latest/references/core/layers/support/PixelBlock/#pixels) found in the * `pixelBlock` property of the `pixelData` object and process them. * This function may be used to hide some pixels from the view, alter their * values, and change their color. The pixelFilter should be used when the imagery layer's * [format](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#format) is `lerc` or `tiff` as these formats return raw pixel data to the client. * * @see [Sample - Pixel Filter](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-pixelvalues/) * @example * let layer = new ImageryLayer({ * url: // url to the image service * pixelFilter: colorize // see the colorize() function below * }); * * // This function is applied to the pixelFilter property of the layer. * // It takes the original value of each pixel and converts it to an RGB * // representation to color the layer on a blue - red ramp. Blue pixels * // represent low values and red pixels represent high values. View the sample * // referenced above to see how this function works * * function colorize(pixelData) { * // If there isn't pixelData, a pixelBlock, nor pixels, exit the function * if (pixelData === null || pixelData.pixelBlock === null || pixelData.pixelBlock.pixels === null) { * return; * } * * // The pixelBlock stores the values of all pixels visible in the view * let pixelBlock = pixelData.pixelBlock; * * // Get the min and max values of the data in the current view * let minValue = pixelBlock.statistics[0].minValue; * let maxValue = pixelBlock.statistics[0].maxValue; * * // The mask is an array that determines which pixels are visible to the client * let mask = pixelBlock.mask; * * // The pixels visible in the view * let pixels = pixelBlock.pixels; * * // The number of pixels in the pixelBlock * let numPixels = pixelBlock.width * pixelBlock.height; * * // Calculate the factor by which to determine the red and blue * // values in the colorized version of the layer * let factor = 255.0 / (maxValue - minValue); * * // Get the pixels containing temperature values in the only band of the data * let band1 = pixels[0]; * * // Create empty arrays for each of the RGB bands to set on the pixelBlock * let rBand = []; * let gBand = []; * let bBand = []; * * // Loop through all the pixels in the view * for (i = 0; i < numPixels; i++) { * // Get the pixel value recorded at the pixel location * let tempValue = band1[i]; * // Calculate the red value based on the factor * let red = (tempValue - minValue) * factor; * * // Sets a color between blue (lowest) and red (highest) in each band * rBand[i] = red; * gBand[i] = 0; * bBand[i] = 255 - red; * } * * // Set the new pixel values on the pixelBlock (now three bands) * pixelData.pixelBlock.pixels = [rBand, gBand, bBand]; * pixelData.pixelBlock.pixelType = "u8"; // u8 is used for color * } */ accessor pixelFilter: PixelFilterFunction | null | undefined; /** * Raster source pixel type. * * Value | Range of values that each cell can contain | * ----- | ------------------------------------------- | * unknown | Pixel type is unknown | * s8 | -128 to 127 | * s16 | -32768 to 32767 | * s32 | -2147483648 to 2147483647 | * u8 | 0 to 255 | * u16 | 0 to 65535 * u32 | 0 to 4294967295 * f32 | -3.402823466e+38 to 3.402823466e+38 * f64 | 0 to 18446744073709551616 */ accessor pixelType: RasterPixelType | null | undefined; /** * A complete list of fields that consists of raster attribute table fields, item pixel value, service pixel value, service pixel value with various server * defined function templates, and raster attribute table fields. This list is used for layer's [ImageryLayer.popupTemplate](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#popupTemplate). * * It is essential in many imagery workflows to show pixel values and related categorical information (if applicable) in a popup. * To meet this requirement, there're additional raster fields used in image service popups, representing pixel values and corresponding attributes * if the service has additional rasterAttributeTable resource. These raster fields are prefixed with `Raster.` to indicate that they are special fields and avoid * any potential conflict with fields from service info. * * * #### Pixel value fields * * Below is a list of raster fields that return different types of pixel values and their descriptions. * *
* Read More * * ##### Service pixel value * The `Raster.ServicePixelValue` field returns a pixel value at the identifying location, after dynamic mosaicking (if applicable) and processing is done using layer's current * [mosaicRule](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#mosaicRule) and [rasterFunction](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#rasterFunction) settings. This field exists for all image services. The server side dynamic mosaicking process is only applicable * if the service is published from a mosaic dataset. * * ##### Raw service pixel value * The `Raster.ServicePixelValue.Raw` field returns a pixel value at the identifying location, after dynamic mosaicking (if applicable) but without further processing. It uses layer's * current [mosaicRule](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#mosaicRule) and `None` [raster function](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#rasterFunction). This field only exists if the image service info has `allowRasterFunction: true`, and has a `None` entry * in `rasterFunctionInfos`. * * ##### Service pixel value from server side raster functions * The `Raster.ServicePixelValue.RFTNAME` field returns a pixel value at the identifying location, after dynamic mosaicking (if applicable) and processing using any predefined sever side * raster function. The list of available functions is defined by `rasterFunctionInfos` in image service root resource, except `None` function, which is already mapped * as Raw Service Pixel Value. This field only exists if the image service info has `allowRasterFunction: true`. * * ##### Item pixel value * The `Raster.ItemPixelValue` field returns a pixel value representing pixel values of each of the individual images in the image service. This is only applicable to image services published * from a mosaic dataset. It can be retrieved from the image service using either the [identify()](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#identify) or the [getSamples()](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#getSamples) method. * * For example, for a service published from a mosaic dataset with the following raster functions: * * ```js * rasterFunctionInfos": [ * { "name": "None", "description": "", "help": ""}, * { "name": "EVI", "description": "", "help": ""}], * { "name": "VI", "description": "", "help": ""} * ] * ``` * * You can have the following additional raster fields: `Raster.ServicePixelValue`, `Raster.ServicePixelValue.Raw`, `Raster.ServicePixelValue.EVI`, `Raster.ServicePixelValue.VI` and * `Raster.ItemPixelValue`. * * Pixel value fields support formatting. Since an image service can have multiple bands, pixel value represents multiple bands, and shouldn't be assumed as a single number. * This needs to be considered when formatting values. * * ##### Categorical attributes fields for pixel value * When working with categorical data (e.g. Land Cover data), image service info may have an associated `rasterAttributeTable` resource, indicated in root resource via * the `hasRasterAttributeTable` flag. A raster attribute table always has a `Value` field, and each record in the table represents a pixel value mapping to associated categorical * fields, such as the ClassName (`Raster.ClassName`), Count (`Raster.Count`) or color representation (`Raster.Red`, `Raster.Green` and `Raster.Blue`) fields of the value. * * ##### Vector fields * The `Raster.Magnitude` and `Raster.Direction` fields return magnitude and direction values from a multidimensional dataset with a vector field. * *
* * @example * layer.when(() => { * // print out field names returned in layer.rasterFields * layer.rasterFields.forEach((field) => { * console.log(field.name); * }); * }); */ get rasterFields(): Field[]; /** * Specifies the rule for how the requested image should be processed. When rasterFunction applied, the server returns an updated service * information that reflects a custom processing as defined by the raster function. * * Use helper functions from the [rasterFunctionUtils](https://developers.arcgis.com/javascript/latest/references/core/layers/support/rasterFunctionUtils/) module when creating raster functions that apply to ImageryLayers. * * @since 4.27 * @see [Raster functions - ArcGIS REST API](https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm) * @example * // apply NDVI and colormap raster function to an imagery layer * // use rasterFunctionUtils convenience methods to create raster functions * const ndvi = rasterFunctionUtils.bandArithmeticNDVI({ * nirBandId: 4, * redBandId: 3, * scientificOutput: false * }); * * const colormap = rasterFunctionUtils.colormap({ * colorRampName: "NDVI3", * raster: ndvi * }); * layer.rasterFunction = colormap; * @example * const stretchFunction = new RasterFunction({ * functionName: "Stretch", * functionArguments: { * StretchType: 5, // (0 = None, 3 = StandardDeviation, 4 = Histogram Equalization, 5 = MinMax, 6 = PercentClip, 9 = Sigmoid) * Min: 0, * Max: 255, * Raster: "$$" // $$(default) refers to the entire image service, $2 refers to the second image of the image service * }, * outputPixelType: "u8" * }); * * const colorFunction = new RasterFunction({ * functionName: "Colormap", * functionArguments: { * ColorrampName: "Temperature", // other examples: "Slope", "Surface", "Blue Bright".... * Raster: stretchFunction // chaining multiple raster functions * } * }); * * const imageryLayer = new ImageryLayer({ * url: * "https://sampleserver6.arcgisonline.com/arcgis/rest/services/ScientificData/SeaTemperature/ImageServer" * }); * * imageryLayer.rasterFunction = colorFunction; */ get rasterFunction(): RasterFunction | null | undefined; set rasterFunction(value: RasterFunctionProperties | null | undefined); /** * Returns raster function information for the image services, * including the name, description, help, function type, and a thumbnail of pre-configured raster function templates. * * @since 4.22 */ get rasterFunctionInfos(): ServiceRasterFunctionInfo[] | null | undefined; /** * The renderer assigned to the layer. The renderer defines how to visualize pixels in the imagery layer. * Depending on the renderer type, the pixels may be [stretched](https://developers.arcgis.com/javascript/latest/references/core/renderers/RasterStretchRenderer/) * across the color ramp, [classified](https://developers.arcgis.com/javascript/latest/references/core/renderers/ClassBreaksRenderer/), * have [different symbols](https://developers.arcgis.com/javascript/latest/references/core/renderers/UniqueValueRenderer/) based on values, or show [shaded reliefs](https://developers.arcgis.com/javascript/latest/references/core/renderers/RasterShadedReliefRenderer/). * * If both renderer and [pixelFilter](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#pixelFilter) is applied to an ImageryLayer then pixelFilter will override * the renderer. * * > [!WARNING] * > * > **Known Limitations** * > * > Currently, the [VectorFieldRenderer](https://developers.arcgis.com/javascript/latest/references/core/renderers/VectorFieldRenderer/) is not supported in 3D [SceneView](https://developers.arcgis.com/javascript/latest/references/core/views/SceneView/). * * @since 4.11 * @see [Sample - Intro to ImageryTileLayer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagerytilelayer/) * @see [Sample - ImageryTileLayer - shaded relief renderer](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-renderer/) */ get renderer(): RasterRendererUnion | null | undefined; set renderer(value: ((ClassBreaksRendererProperties & { type: "class-breaks" }) | (FlowRendererProperties & { type: "flow" }) | (RasterColormapRendererProperties & { type: "raster-colormap" }) | (RasterShadedReliefRendererProperties & { type: "raster-shaded-relief" }) | (RasterStretchRendererProperties & { type: "raster-stretch" }) | (UniqueValueRendererProperties & { type: "unique-value" }) | (VectorFieldRendererProperties & { type: "vector-field" })) | null | undefined); /** * Source raster information of the image service. The layer must be * [ImageryLayer.loaded](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#loaded) before serviceRasterInfo can be accessed. * * @since 4.12 * @see [Raster info](https://developers.arcgis.com/rest/services-reference/raster-info.htm) */ get serviceRasterInfo(): RasterInfo; /** * The [image service's metadata JSON](https://developers.arcgis.com/rest/services-reference/image-service.htm) * exposed by the ArcGIS REST API. While most commonly used properties * are exposed on the ImageryLayer class directly, this property gives access to all information returned * by the image service. This property is useful if working in an application built using an older version of the API * which requires access to image service properties from a more recent version. * * @since 4.13 */ accessor sourceJSON: any; /** * Image service data source type. * * @since 4.28 */ get sourceType(): SourceType; /** The spatial reference of the image service. */ get spatialReference(): SpatialReference; /** * The URL to the REST endpoint of the layer. The URL may either point * to a resource on ArcGIS Enterprise or ArcGIS Online. * * @example * // This url must point to an Image Service * let layer = new ImageryLayer({ * url: "http://sampleserver6.arcgisonline.com/arcgis/rest/services/CharlotteLAS/ImageServer" * }); */ accessor url: string | null | undefined; /** * The version of ArcGIS Server in which the image service is published. * * @example * // Prints the version number to the console - e.g. 10.91, 11.2, 11.3 * console.log(layer.version); */ get version(): number; /** * Calculates volume on the elevation data for the specified [ImageVolumeParameters.mosaicRule](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageVolumeParameters/#mosaicRule), base surface type * and [Polygon](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polygon/) or [Extent](https://developers.arcgis.com/javascript/latest/references/core/geometry/Extent/) geometries. * If no [mosaic rule](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHistogramParameters/#mosaicRule) is provided, the default mosaic rule from the layer will be applied. * * @param parameters - Specifies parameters for calculating volume. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, [ImageVolumeResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageVolumeResult/) is returned * containing an array of [ImageVolume](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageVolume/). * @since 4.32 * @see [ArcGIS REST API - Compute Pixel Location](https://developers.arcgis.com/rest/services-reference/enterprise/calculate-volume) * @example * const params = new ImageVolumeParameters({ * geometries: [ * new Extent({ * xmin: 1450000, * ymin: 540000, * xmax: 1451000, * ymax: 541000, * spatialReference: new SpatialReference({ wkid: 2264 }) * }), * new Extent({ * xmin: 1450500, * ymin: 540000, * xmax: 1451000, * ymax: 541000, * spatialReference: new SpatialReference({ wkid: 2264 }) * })], * constantZ: 1, * baseType: "constant" * }); * * layer.calculateVolume(params).then((result) => { * // use the returned result * console.log(result); * }); */ calculateVolume(parameters: ImageVolumeParameters | ImageVolumeParametersProperties, requestOptions?: RequestOptions): Promise; /** * Computes the rotation angle of a ImageryLayer at a given location. * This operation is supported at 10.9.1 and later. * * @param parameters - Specifies parameters for computing angles. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns an instance of [ImageAngleResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageAngleResult/) * containing computed north and up angles. * @since 4.22 * @see [ArcGIS REST API - Compute Angles](https://developers.arcgis.com/rest/services-reference/enterprise/compute-angles.htm) */ computeAngles(parameters: ImageAngleParameters | ImageAngleParametersProperties, requestOptions?: RequestOptions): Promise; /** * Computes histograms based on the provided [ImageHistogramParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHistogramParameters/). * If a [raster function](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHistogramParameters/#rasterFunction) and * a [mosaic rule](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHistogramParameters/#mosaicRule) are not specified, the current settings on the layer will be used. * This operation is supported by an image service published with a mosaic dataset or a raster dataset at ArcGIS Server 10.4 and later. * The result of this operation contains histograms computed for the given extent. * * @param parameters - Specifies parameters for computing histograms. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to an object containing histogram results. * See the object specification table below for details. * * Property | Type | Description * ---------|------|------------- * histograms[] | [RasterHistogram](https://developers.arcgis.com/javascript/latest/references/core/layers/raster/types/#RasterHistogram) | Result containing raster histograms. * @since 4.18 * @example * // set the pixel size parameter to match the current * // resolution of the view and spatial reference * let pixelSize = { * x:view.resolution, * y:view.resolution, * spatialReference: { * wkid: view.spatialReference.wkid * } * } * // set the histogram parameters to request * // data for the current view extent and resolution * let params = new ImageHistogramParameters({ * geometry: view.extent, * pixelSize: pixelSize * }); * * // request for histograms for the specified parameters * layer.computeHistograms(params).then(function(results){ * // results are returned and process it as needed. * console.log("histograms and stats", results); * }) * .catch(function(err){ * console.log("err", err) * }); */ computeHistograms(parameters: ImageHistogramParameters | ImageHistogramParametersProperties, requestOptions?: RequestOptions): Promise; /** * Computes the corresponding pixel location in columns and rows for an image based on input geometry. * Requires that the raster catalog item has a valid `icsToPixel` resource. * * @param parameters - Specifies parameters for computing image space pixel location. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns an instance of * [ImagePixelLocationResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImagePixelLocationResult/) containing x and y values for the column and row of each input geometry. * @since 4.22 * @see [ArcGIS REST API - Compute Pixel Location](https://developers.arcgis.com/rest/services-reference/enterprise/compute-pixel-location.htm) */ computePixelSpaceLocations(parameters: ImagePixelLocationParameters | ImagePixelLocationParametersProperties, requestOptions?: RequestOptions): Promise; /** * Computes [statistics](https://developers.arcgis.com/javascript/latest/references/core/layers/raster/types/#RasterBandStatistics) and [histograms](https://developers.arcgis.com/javascript/latest/references/core/layers/raster/types/#RasterHistogram) * for the provided [ImageHistogramParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHistogramParameters/). * If a [raster function](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHistogramParameters/#rasterFunction) and a * [mosaic rule](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHistogramParameters/#mosaicRule) are not specified, the current settings on the layer will be used. * This operation is supported by an image service published with a mosaic dataset or a raster dataset at ArcGIS Server 10.4 and later. * * The result of this operation contains both statistics and histograms computed for the given extent or polygon. * Note that the given extent or polygon is first projected to the spatial reference of the service, then the source pixels are requested at the specified * resolution for the projected geometry's extent. The statistics and histogram are then computed based on the source pixel's values. * * @param parameters - Specifies parameters for computing statistics and histograms. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to an object containing histogram and statistics results. * See the object specification table below for details. * * Property | Type | Description * ---------|------|------------- * histograms[] | [RasterHistogram](https://developers.arcgis.com/javascript/latest/references/core/layers/raster/types/#RasterHistogram) | Result containing raster histograms. * bandStatistics[] | [RasterBandStatistics](https://developers.arcgis.com/javascript/latest/references/core/layers/raster/types/#RasterBandStatistics) | Raster band statistics. * @since 4.18 * @example * // set the pixel size parameter to match the current * // resolution of the view and spatial reference * let pixelSize = { * x:view.resolution, * y:view.resolution, * spatialReference: { * wkid: view.spatialReference.wkid * } * } * // set the histogram parameters to request * // data for the current view extent and resolution * let params = new ImageHistogramParameters({ * geometry: view.extent, * pixelSize: pixelSize * }); * * // request for histograms and statistics for the specified parameters * layer.computeStatisticsHistograms(params).then(function(results){ * // results are returned and process it as needed. * console.log("histograms and stats", results); * }) * .catch(function(err){ * console.log("err", err) * }); */ computeStatisticsHistograms(parameters: ImageHistogramParameters | ImageHistogramParametersProperties, requestOptions?: RequestOptions): Promise; /** * Fetches raw pixel data for a specified extent, width, and height, preserving full pixel depth and including all bands without applying renderer to the layer. * The operation uses the following layer properties: [mosaicRule](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#mosaicRule), [rasterFunction](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#rasterFunction), [compressionTolerance](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#compressionTolerance), * [definitionExpression](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#definitionExpression), [noData](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#noData), [noDataInterpretation](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#noDataInterpretation), and [multidimensionalSubset](https://developers.arcgis.com/javascript/latest/references/core/layers/mixins/ArcGISImageService/#multidimensionalSubset). * * @param extent - The extent of the image to export. * @param width - The width of the image in pixels. * @param height - The height of the image in pixels. * @param options - The parameter options is an object with the following properties. * @returns Resolves to an object containing the parameters of the exported pixels including [PixelBlock](https://developers.arcgis.com/javascript/latest/references/core/layers/support/PixelBlock/). * The `pixelBlock` contains the value of each pixel in the image. * @since 4.33 */ fetchPixels(extent: Extent, width: number, height: number, options?: DynamicFetchRasterOptions): Promise; /** * Finds images based on the provided [FindImagesParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FindImagesParameters/). * It locates all images that contain the [FindImagesParameters.toGeometry](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FindImagesParameters/#toGeometry) value and sorts them accordingly. * The [FindImagesParameters.fromGeometry](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FindImagesParameters/#fromGeometry) can be a 3D SceneView's [camera position](https://developers.arcgis.com/javascript/latest/references/core/Camera/#position) * and [FindImagesParameters.toGeometry](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FindImagesParameters/#toGeometry) is a clicked location on the map. * * This operation is supported with ArcGIS Enterprise version 11.2 or higher image services. * * @param parameters - Specifies the find images parameters. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to a [FindImagesResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FindImagesResult/) containing images that meet the search requirements. * @since 4.29 */ findImages(parameters: FindImagesParameters | FindImagesParametersProperties, requestOptions?: RequestOptions): Promise; /** * Generates raster info for the specified raster function. * * @param rasterFunction - Raster function for the requested raster info. * @param options - An object with the following properties. * @returns When resolved, a [RasterInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/support/RasterInfo/) * containing info specific to the requested raster function is returned. * @since 4.12 */ generateRasterInfo(rasterFunction: RasterFunction | RasterFunctionProperties | null | undefined, options?: AbortOptions): Promise; /** * Gets the [image coordinate system](https://developers.arcgis.com/rest/services-reference/raster-ics.htm) * information of a catalog item in an image service. The returned object can be used to set the 2D MapView's * [MapView.spatialReference](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#spatialReference) and [MapView.extent](https://developers.arcgis.com/javascript/latest/references/core/views/MapView/#extent) * so that the image can be displayed in its original coordinate system. * The image service must have a catalog capability. * * @param rasterId - Raster catalog id. * @param options - An object with the following properties. * @returns When resolved, returns an object containing [image coordinate system](https://developers.arcgis.com/rest/services-reference/raster-ics.htm) of the raster catalog item. * @since 4.13 * @see [Sample - ImageryLayer image coordinate system](https://developers.arcgis.com/javascript/latest/sample-code/layers-imagery-coordinatesystem/) * @see [Image coordinate system](https://developers.arcgis.com/documentation/common-data-types/image-coordinate-system.htm) * @see [Image space analysis](https://pro.arcgis.com/en/pro-app/latest/help/analysis/image-analyst/what-is-image-space-analysis-.htm) * @example * // get image coordinate system of the specified catalog item * // for example Raster.OBJECTID = 1600 * layer.getCatalogItemICSInfo(imageId).then(function(info) { * // create a spatialReference object and set its * // imageCoordinateSystem property * let sr = { // autocasts to esri/geometry/SpatialReference * imageCoordinateSystem: { id: imageId } * }; * * // Calculate an extent for the mapview based on the image's extent * // in its original coordinate system * const width = document.getElementById("viewDiv").getBoundingClientRect().width; * const height = document.getElementById("viewDiv").getBoundingClientRect().height; * const newExt = info.icsExtent.clone(); * const scaleFactor = 5; * newExt.xmin = (newExt.xmin + newExt.xmax - width * scaleFactor) / 2; * newExt.xmax = newExt.xmin + width * scaleFactor; * newExt.ymin = (newExt.ymin + newExt.ymax - height * scaleFactor) / 2; * newExt.ymax = newExt.ymin + height * scaleFactor; * newExt.spatialReference = sr; * * // set the MapView's spatialReference to the image's coordinate system * // and the extent to the extent calculated above * view = new MapView({ * container: "viewDiv", * map: map, * spatialReference: sr, * extent: newExt * }); * }); */ getCatalogItemICSInfo(rasterId: number, options?: AbortOptions): Promise; /** * Get the [raster info](https://developers.arcgis.com/javascript/latest/references/core/layers/support/RasterInfo/) of a * [catalog item](https://developers.arcgis.com/rest/services-reference/raster-catalog-item.htm) in an image service. * Each raster catalog item represents a feature in the raster catalog. Each such feature has an associated raster. * The image service must have a catalog capability. * * @param rasterId - Raster catalog id. * @param options - An object with the following properties. * @returns When resolved, a [RasterInfo](https://developers.arcgis.com/javascript/latest/references/core/layers/support/RasterInfo/) * containing info specific to the catalog item is returned. * @since 4.13 */ getCatalogItemRasterInfo(rasterId: number, options?: AbortOptions): Promise; /** * Retrieves an image's url using the provided [ImageUrlParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageUrlParameters/). * This operation is supported with ArcGIS Enterprise version 11.3 or higher image services. * * @param parameters - Specifies the image url parameters. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to a [ImageUrlResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageUrlResult/) containing the image's url. * @since 4.30 */ getImageUrl(parameters: ImageUrlParameters | ImageUrlParametersProperties, requestOptions?: RequestOptions): Promise; /** * Returns sample point locations, pixel values and corresponding resolutions of the source data for a given geometry. When the input geometry * is a [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/), [Extent](https://developers.arcgis.com/javascript/latest/references/core/geometry/Extent/), or [Polygon](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polygon/), * the sampling is based on [ImageSampleParameters.sampleCount](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageSampleParameters/#sampleCount) or * [ImageSampleParameters.sampleDistance](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageSampleParameters/#sampleDistance) parameters. When the geometry is a * [Point](https://developers.arcgis.com/javascript/latest/references/core/geometry/Point/) or [Multipoint](https://developers.arcgis.com/javascript/latest/references/core/geometry/Multipoint/), the point or points are used directly. * * The number of sample locations in the response is based on the `sampleDistance` or `sampleCount` parameter and cannot exceed the limit imposed by the image * service. The sample points are located at the intersection of the provided geometry and the raster item's footprints. They are also filtered by * the [ImageSampleParameters.mosaicRule](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageSampleParameters/#mosaicRule) and [ImageSampleParameters.pixelSize](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageSampleParameters/#pixelSize) parameters. * * @param parameters - The parameters used in the getSamples operation. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, [ImageSampleResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageSampleResult/) is returned containing an array of [ImageSamples](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageSample/). * @since 4.20 * @example * // get all sample points along a polyline * // at the specified sample distance and pixel size * const param = { * geometry: polyline * returnFirstValueOnly: false, * // resolution - unit of the view's spatial reference * pixelSize: { * x:12, * y:12, * spatialReference: view.spatialReference * }, * interpolation: "nearest", * // unit of the geometry's spatial reference is used * sampleDistance: 30, * outFields: ["*"] * }; * imageryLayer.getSamples(param).then((results) => { * // use the getSamples results as needed. * console.log(results); * }) * .catch(function(error){ * console.log(error) * }) */ getSamples(parameters: ImageSampleParameters | ImageSampleParametersProperties, requestOptions?: RequestOptions): Promise; /** * Sends a request to the ArcGIS REST image service to identify content based on the * specified [ImageIdentifyParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageIdentifyParameters/). * If a [raster function](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageIdentifyParameters/#rasterFunction) and * a [mosaic rule](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageIdentifyParameters/#mosaicRule) * are not specified, then the current layer settings will be used. * * @param parameters - The identify parameters used in the identify operation. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, a [ImageIdentifyResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageIdentifyResult/) * is returned. * @since 4.18 */ identify(parameters: ImageIdentifyParameters | ImageIdentifyParametersProperties, requestOptions?: RequestOptions): Promise; /** * Converts a geometry from an image space to a map space using the provided [ImageToMapParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageToMapParameters/). * This operation is supported with ArcGIS Enterprise version 11.2 or higher image services. * * @param parameters - Specifies the image to map parameters. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to a geometry object. * @since 4.29 */ imageToMap(parameters: ImageToMapParameters | ImageToMapMultirayParametersProperties, requestOptions?: RequestOptions): Promise; /** * Creates a map space geometry from multiray image space geometries using the provided [ImageToMapMultirayParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageToMapMultirayParameters/). * For example, a house is shown in several raster items. Users can specify the house location on each image using the [ImageToMapMultirayParameters.geometries](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageToMapMultirayParameters/#geometries) * parameter. Then in the [ImageToMapMultirayParameters.rasterIds](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageToMapMultirayParameters/#rasterIds) parameter, specify the rasterIds of the images in the same order as the geometries. * The `imageToMapMultiray` method will find and return the house location in the map space on all specified images. * * This operation is supported with ArcGIS Enterprise version 11.2 or higher image services. * * @param parameters - Specifies the image to map multiray parameters. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to a geometry object where the coordinates are in map coordinates. * @since 4.29 */ imageToMapMultiray(parameters: ImageToMapMultirayParameters | ImageToMapMultirayParametersProperties, requestOptions?: RequestOptions): Promise; /** * Converts a given geometry from a map space to an image space using the provided [MapToImageParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/MapToImageParameters/). * This operation is supported with ArcGIS Enterprise version 11.2 or higher image services. * * @param parameters - Specifies the map to image parameters. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to a geometry object where the coordinates are in image space. * @since 4.29 */ mapToImage(parameters: MapToImageParameters | MapToImageParametersProperties, requestOptions?: RequestOptions): Promise; /** * Calculates the area and perimeter of a given geometry on an image service. The result of this operation includes the name of the raster dataset being used, * the sensor name, and measured values. * * @param parameters - Specifies parameters for measuring the area and perimeter for a given geometry on an image service. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns an instance of [ImageAreaResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageAreaResult/) * containing the name of the raster dataset being used, the sensor name, and measured values. * @since 4.26 * @example * // calculate an area and perimeter of an image visible in the view * const params = new ImageAreaParameters({ * geometry: view.extent, * areaUnit: "square-kilometers", * linearUnit: "kilometers" * }); * * layer.measureAreaAndPerimeter(params).then((result)=>{ * // use the area and perimeter measure values * console.log(result); * }); */ measureAreaAndPerimeter(parameters: ImageAreaParameters | ImageAreaParametersProperties, requestOptions?: RequestOptions): Promise; /** * Measures the area and the perimeter of a polygon in an image space on a selected raster when the following conditions are met: * * * Image service must be published from a mosaic dataset. * * Raster items in the mosaic dataset must have 3D transformation (e.g. mosaic dataset built with UAV raster type). * * @param parameters - Specifies parameters for measuring the area and the perimeter. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [MeasureAreaFromImageResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/MeasureAreaFromImageResult/) * containing the polygon's geometry in a map space, and its length, area and center. * @since 4.29 */ measureAreaFromImage(parameters: MeasureFromImageParameters, requestOptions?: RequestOptions): Promise; /** * Calculates the distance and angle between two points on an image service. The result of this operation * includes the name of the raster dataset being used, the sensor name, and measured values. * * @param parameters - Specifies parameters for measuring the distance and angle between two points on an image service. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns an instance of [ImageDistanceResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageDistanceResult/) * containing the name of the raster dataset being used, the sensor name, and measured values. * @since 4.26 */ measureDistanceAndAngle(parameters: ImageDistanceParameters | ImageDistanceParametersProperties, requestOptions?: RequestOptions): Promise; /** * Calculates the height of an object between two points on an image service if the sensor info is available. * The result of this operation includes the name of the raster dataset being used, the sensor name, and measured values. * See the [ImageHeightParameters.operationType](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHeightParameters/#operationType) documentation for types of * height measurements. * * @param parameters - Specifies parameters for measuring the height of an object between two points on * an image service. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns an instance of [ImageHeightResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageHeightResult/) * containing the name of the raster dataset being used, the sensor name, and measured values. * @since 4.26 */ measureHeight(parameters: ImageHeightParameters | ImageHeightParametersProperties, requestOptions?: RequestOptions): Promise; /** * Measures the length of a polyline in an image space on a selected raster when the following conditions are met: * * * Image service must be published from a mosaic dataset. * * Raster items in the mosaic dataset must have 3D transformation (e.g. mosaic dataset built with UAV raster type). * * @param parameters - Specifies parameters for measuring the length of a polyline. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request. * @returns When resolved, returns an instance of [MeasureLengthFromImageResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/MeasureLengthFromImageResult/) * containing the [Polyline](https://developers.arcgis.com/javascript/latest/references/core/geometry/Polyline/) in a map space and its length. * @since 4.29 */ measureLengthFromImage(parameters: MeasureFromImageParameters, requestOptions?: RequestOptions): Promise; /** * Returns the location for a given point or centroid of a given area on an image service. * * @param parameters - Specifies parameters for determining a point location or a centroid * of a given area on the image service. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns an instance of [ImagePointResult](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImagePointResult/) * containing the name of the raster dataset being used, the sensor name, and measured values. * @since 4.26 */ measurePointOrCentroid(parameters: ImagePointParameters | ImagePointParametersProperties, requestOptions?: RequestOptions): Promise; /** * Returns the boundary of an image for the provided [ImageBoundaryParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageBoundaryParameters/). * This operation is supported with ArcGIS Enterprise version 10.6 or higher image services. * * @param parameters - Specifies the imagery boundary parameters. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to an object containing boundary geometry of an image service. * @since 4.29 */ queryBoundary(parameters?: ImageBoundaryParameters | ImageBoundaryParametersProperties, requestOptions?: RequestOptions): Promise; /** * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the image service and * returns the [Extent](https://developers.arcgis.com/javascript/latest/references/core/geometry/Extent/) of rasters that satisfy the query. * * @param query - Specifies the attributes and spatial * filter of the query. If no parameters are specified, then the extent and count of all rasters * satisfying the layer's configuration/filters are returned. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns the extent and count of the rasters * that satisfy the input query. See the object specification table below for details. * Property | Type | Description * ---------|------|------------- * count | Number | The number of rasters that satisfy the input query. * extent | [Extent](https://developers.arcgis.com/javascript/latest/references/core/geometry/Extent/) \| null | The extent of the rasters that satisfy the query. * @since 5.0 * @example * // Queries for the extent of all images matching the layer's configurations * // e.g. definitionExpression * layer.queryExtent().then(function(results){ * // go to the extent of the results satisfying the query * view.goTo(results.extent); * }); */ queryExtent(query?: QueryProperties | null | undefined, requestOptions?: RequestOptions): Promise<{ count: number; extent: Extent | null; }>; /** * Returns GPS information for the provided [ImageGPSInfoParameters](https://developers.arcgis.com/javascript/latest/references/core/rest/support/ImageGPSInfoParameters/). * It returns information about cameras, GPS locations when the image was taken, * and exterior orientation information of each image. * * This operation is supported with ArcGIS Enterprise version 11.2 or higher image services. * * @param parameters - Specifies the parameters for query GPS info operation. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns Resolves to an object containing information about images and cameras. * @since 4.29 */ queryGPSInfo(parameters?: ImageGPSInfoParametersProperties, requestOptions?: RequestOptions): Promise; /** * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the image service and returns an * array of Object IDs for the rasters. * * @param query - Specifies the query parameters. If no parameters are specified, then all Object IDs satisfying the * layer's configuration/filters are returned. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns an array of numbers representing the object IDs of the rasters satisfying the query. * @since 4.21 */ queryObjectIds(query?: QueryProperties | null | undefined, requestOptions?: RequestOptions): Promise; /** * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against the image service and * returns the number of rasters that satisfy the query. * * @param query - Specifies the query parameters. If no parameters are specified, then count of all rasters satisfying the layer's * configuration/filters are returned. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, returns the number of rasters satisfying the query. * @since 4.21 * @example * const query = new Query({ * where: "LowPS <= 30" * }); * * layer.queryRasterCount(query).then(function(result){ * // use the count of rasters * console.log("queryRasterCount", result) * }); */ queryRasterCount(query?: QueryProperties | null | undefined, requestOptions?: RequestOptions): Promise; /** * Executes a [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) against an image service and returns a * [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) once the promise resolves. * A [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) contains an array of [Graphic](https://developers.arcgis.com/javascript/latest/references/core/Graphic/) * features. * * @param query - Specifies the query parameters. If no parameters are specified, then all features satisfying the layer's * configuration/filters are returned. * @param requestOptions - Additional [options](https://developers.arcgis.com/javascript/latest/references/core/request/#request) to be used for the data request * (will override requestOptions defined during construction). * @returns When resolved, a [FeatureSet](https://developers.arcgis.com/javascript/latest/references/core/rest/support/FeatureSet/) containing an array * of graphics is returned. * @since 4.18 * @example * let params = new Query({ * // Define query parameters here * }); * layer.queryRasters(params).then(function(response){ * // The response is a FeatureSet if results are found * }); */ queryRasters(query?: QueryProperties | null | undefined, requestOptions?: RequestOptions): Promise; } export interface ImageryMensurationCapabilities { /** Indicates if the layer supports distance and angle mensuration operation. */ supportsDistanceAndAngle: boolean; /** Indicates if the layer supports area and perimeter mensuration operation. */ supportsAreaAndPerimeter: boolean; /** Indicates if the layer supports point or centroid mensuration operations. */ supportsPointOrCentroid: boolean; /** Indicates if the layer supports a mensuration operation for calculating a height of a ground feature by measuring from the base of the object to the top of the object. */ supportsHeightFromBaseAndTop: boolean; /** Indicates if the layer supports a mensuration operation for calculating a height of a feature by measuring from the base of the object to the top of the object's shadow on the ground. */ supportsHeightFromBaseAndTopShadow: boolean; /** Indicates if the layer supports mensuration operation for calculating a height from the top of the object to the top of the objects's shadow on the ground. */ supportsHeightFromTopAndTopShadow: boolean; /** Indicates if the layer supports 3D mensuration operations. */ supports3D: boolean; } export interface ImageryLayerCapabilities { /** Describes operations supported by the ImageryLayer. */ operations: ImageryLayerOperations; /** Describes [Query](https://developers.arcgis.com/javascript/latest/references/core/rest/support/Query/) operations supported by the layer. Use the [query](https://developers.arcgis.com/javascript/latest/references/core/rest/query/) to query an imagery layer. */ query: QueryCapabilities; /** Describes [mensuration operations](https://developers.arcgis.com/rest/services-reference/enterprise/measure.htm) supported by the ImageryLayer. Added since ArcGIS Maps SDK for JavaScript 4.26. */ mensuration: ImageryMensurationCapabilities; } export interface ImageryLayerOperations extends OperationCapabilities { /** Indicates if the layer supports a [compute histograms](https://developers.arcgis.com/rest/services-reference/compute-histograms.htm) operation from an area of interest. */ supportsComputeHistograms: boolean; /** Indicates if the layer supports an [export image](https://developers.arcgis.com/rest/services-reference/export-image.htm) operation based on a bounding box. */ supportsExportImage: boolean; /** Indicates if the layer supports an [identify()](https://developers.arcgis.com/javascript/latest/references/core/rest/identify/#identify) operation on pixel values. */ supportsIdentify: boolean; /** Indicates if the layer supports image to map operation. */ supportsImageToMap: boolean; /** Indicates if the layer supports image to map multiray operation. */ supportsImageToMapMultiray: boolean; /** Indicates if the layer supports map to image operation. */ supportsMapToImage: boolean; /** Indicates if the layer supports mensuration. */ supportsMeasure: boolean; /** Indicates if the layer allows the source image to be [downloaded](https://developers.arcgis.com/rest/services-reference/download-rasters.htm). */ supportsDownload: boolean; /** Indicates if the layer supports an operation to [query images](https://developers.arcgis.com/rest/services-reference/query-image-service-.htm). */ supportsQuery: boolean; /** Indicates if the layer supports find images operation. */ supportsFindImages: boolean; /** Indicates if the layer supports get image url operation. */ supportsGetImageUrl: boolean; /** Indicates if the layer supports a [sampling operation](https://developers.arcgis.com/rest/services-reference/get-samples.htm). */ supportsGetSamples: boolean; /** Indicates if the layer supports [projection of geometries](https://developers.arcgis.com/rest/services-reference/project.htm), including from/to image spatial reference. */ supportsProject: boolean; /** Indicates if the layer supports an operation [computing statistics and histograms](https://developers.arcgis.com/rest/services-reference/compute-statistics-and-histograms.htm) from an area of interest. */ supportsComputeStatisticsHistograms: boolean; /** Indicates if the layer supports an operation to [query the service's boundary](https://developers.arcgis.com/rest/services-reference/query-boundary.htm). */ supportsQueryBoundary: boolean; /** Indicates if the elevation layer supports an operation to [compute volumes](https://developers.arcgis.com/rest/services-reference/calculate-volume.htm). */ supportsCalculateVolume: boolean; /** Indicates if the layer supports [computing pixel location](https://developers.arcgis.com/rest/services-reference/compute-pixel-location.htm) in pixel space. */ supportsComputePixelLocation: boolean; /** Indicates if the layer supports an operation to [query the service's gps info](https://developers.arcgis.com/rest/services-reference/enterprise/query-gps-.htm). */ supportsQueryGPSInfo: boolean; } /** * Function definition for the [ImageryLayer.pixelFilter](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#pixelFilter) property. * See the example snippet in the [ImageryLayer.pixelFilter](https://developers.arcgis.com/javascript/latest/references/core/layers/ImageryLayer/#pixelFilter) * documentation for more details. * * @param pixelData - An object that provides the user access to * [PixelBlock.pixels](https://developers.arcgis.com/javascript/latest/references/core/layers/support/PixelBlock/#pixels) in and their values in the layer. */ export type PixelFilterFunction = (pixelData: PixelData) => void;