# Class: RasterSource

This documentation is for OpenLayers v10.9.0. The latest is v.

## ol/source/Raster~RasterSource

    import RasterSource from 'ol/source/Raster.js';

A source that transforms data from any number of input sources using an `Operation` function to transform input pixel values into output pixel values.

#### new RasterSource(options)

source/Raster.js, line 516

  Name | Type | Description
  --- | --- | ---
  `sources` | Array.<(module:ol/source/Source~Source|module:ol/layer/Layer~Layer)> | Input sources or layers.
  `operation` | Operation | undefined | Raster operation. The operation will be called with data from input sources and the output will be assigned to the raster source.
  `lib` | Object | undefined | Functions that will be made available to operations run in a worker.
  `threads` | number | undefined | By default, operations will be run in a single worker thread. To avoid using workers altogether, set `threads: 0`. For pixel operations, operations can be run in multiple worker threads. Note that there is additional overhead in transferring data to multiple workers, and that depending on the user's system, it may not be possible to parallelize the work.
  `operationType` | RasterOperationType (defaults to 'pixel') | Operation type. Supported values are `'pixel'` and `'image'`. By default, `'pixel'` operations are assumed, and operations will be called with an array of pixels from input sources. If set to `'image'`, operations will be called with an array of ImageData objects from input sources.
  `resolutions` | Array.<number> | null | undefined | Resolutions. If specified, raster operations will only be run at the given resolutions. By default, the resolutions of the first source with resolutions specified will be used, if any. Set to `null` to use any view resolution instead.

  ##### Fires:

  - `afteroperations` (RasterSourceEvent) - Triggered after operations are run. Listeners will receive an event object with a data property. If more than one thread is used, data will be an array of objects. If a single thread is used, data will be a single object.
  - `beforeoperations` (RasterSourceEvent) - Triggered before operations are run. Listeners will receive an event object with a data property that can be used to make data available to operations.
  - `change` (BaseEvent) - Generic change event. Triggered when the revision counter is increased.
  - `error` (BaseEvent) - Generic error event. Triggered when an error occurs.
  - `imageloadend` (ImageSourceEvent) - Triggered when an image finishes loading.
  - `imageloaderror` (ImageSourceEvent) - Triggered if image loading results in an error.
  - `imageloadstart` (ImageSourceEvent) - Triggered when an image starts loading.
  - `propertychange` (ObjectEvent) - Triggered when a property is changed.

### Extends

- ImageSource

### Methods

#### changed() inherited

Observable.js, line 68

  Increases the revision counter and dispatches a 'change' event.

#### dispatchEvent(event){boolean | undefined} inherited

events/Target.js, line 85

  Dispatches an event and calls all listeners listening for events of this type. The event parameter can either be a string or an Object with a `type` property.

  Name | Type | Description
  --- | --- | ---
  `event` | BaseEvent | string | Event object.

  ##### Returns:

  `false` if anyone called preventDefault on the event object or if any of the listeners returned false.

#### dispose()

source/Raster.js, line 903

  Clean up and unregister the worker.

#### get(key){*} inherited

Object.js, line 136

  Gets a value.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.

  ##### Returns:

  Value.

#### getAttributions(){Attribution} inherited

source/Source.js, line 129

  Get the attribution function for the source.

  ##### Returns:

  Attribution function.

#### getAttributionsCollapsible(){boolean} inherited

source/Source.js, line 137

  ##### Returns:

  Attributions are collapsible.

#### getKeys(){Array.<string>} inherited

Object.js, line 149

  Get a list of object property names.

  ##### Returns:

  List of property names.

#### getProjection(){Projection | null} inherited

source/Source.js, line 146

  Get the projection of the source.

  ##### Returns:

  Projection.

#### getProperties(){NoInfer.<Properties>} inherited

Object.js, line 158

  Get an object of all property names and values.

  ##### Returns:

  Object.

#### getRevision(){number} inherited

Observable.js, line 79

  Get the version number for this object. Each time the object is modified, its version number will be incremented.

  ##### Returns:

  Revision.

#### getState(){State} inherited

source/Source.js, line 170

  Get the state of the source, see `State` for possible states.

  ##### Returns:

  State.

#### on(type, listener){EventsKey | Array<EventsKey>} inherited

Observable.js, line 152

  Listen for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

  ##### Returns:

  Unique key for the listener. If called with an array of event types as the first argument, the return will be an array of keys.

#### once(type, listener){EventsKey | Array<EventsKey>} inherited

Observable.js, line 164

  Listen once for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

  ##### Returns:

  Unique key for the listener. If called with an array of event types as the first argument, the return will be an array of keys.

#### refresh() inherited

source/Source.js, line 192

  Refreshes the source. The source will be cleared, and data from the server will be reloaded.

#### set(key, value, silent) inherited

Object.js, line 218

  Sets a value.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.
  `value` | * | Value.
  `silent` | boolean | undefined | Update without triggering an event.

#### setAttributions(attributions) inherited

source/Source.js, line 203

  Set the attributions of the source.

  Name | Type | Description
  --- | --- | ---
  `attributions` | AttributionLike | undefined | Attributions. Can be passed as `string`, `Array<string>`, `Attribution`, or `undefined`.

#### setOperation(operation, lib)

source/Raster.js, line 667

  Set the operation.

  Name | Type | Description
  --- | --- | ---
  `operation` | Operation | New operation.
  `lib` | Object | undefined | Functions that will be available to operations run in a worker.

#### setProperties(values, silent) inherited

Object.js, line 238

  Sets a collection of key-value pairs. Note that this changes any existing properties and adds new ones (it does not remove any existing properties).

  Name | Type | Description
  --- | --- | ---
  `values` | Partial.<NoInfer.<Properties>> | Values.
  `silent` | boolean | undefined | Update without triggering an event.

#### un(type, listener) inherited

Observable.js, line 173

  Unlisten for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

#### unset(key, silent) inherited

Object.js, line 262

  Unsets a property.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.
  `silent` | boolean | undefined | Unset without triggering an event.