RasterLayer¶
The RasterLayer is a subclass of deck.gl's built-in
BitmapLayer that enables image operations on satellite image
bands. All image operations are done on the GPU for best performance.
You can combine RGB bands in true color or false color manners, or create a spectral index and apply a colormap. With true color imagery, you can apply pansharpening from a panchromatic band. If an operation hasn't been implemented yet, it's relatively easy to add your own operations.
Props¶
modules¶
array: default[]
An array of WebGL modules that define the
pipeline to be run on the GPU. Note that the order of modules is
important, since modules are applied in the same order. If you wanted to
create NDVI with a colormap, you'd want modules to be something like:
[combineBands, normalizedDifference, colormap];
If the order were instead:
[combineBands, colormap, normalizedDifference];
you'd likely see an unintelligible grayscale image. That's because the
colormap step first transforms the internal image object from one dimension
to three, and then the normalizedDifference step takes the first two
dimensions of the colormapped image and transforms back to a single dimension.
That one dimension will be rendered as grayscale.
images¶
Object: default{}
An object containing image data for use in the WebGL modules.
The object's keys should be strings corresponding to the desired module's property name, and the values should be an object containing Image data or Texture2D objects, or an array of these objects.
For example, say I have two independent images representing the near-infrared
(NIR), and red image bands from a satellite. I'd pass an images object like
the following:
import GL from "@luma.gl/constants";
const images = {
imageBands: [
// NIR band
{
data: ImageData
// Use format: GL.LUMINANCE when the ImageData only has one band/channel
// Otherwise use GL.RGB or GL.RGBA
format: GL.LUMINANCE
},
// red band
{
data: ImageData
format: GL.LUMINANCE
}
]
}
If I additionally wanted to apply a pansharpening step, for example, I'd add a
new key named imagePan in the images object, and include the
pansharpenBrovey module in the modules array above.
Note that when image data is passed as an object, it is internally passed on to Luma.gl's Texture2D. For full control over rendering, consult its documentation for additional texture parameters.
Any image data should be passed through images rather than through
moduleProps, as the former will provide better performance and allow you to
not touch the underlying GL context.
moduleProps¶
Object: default{}
An object containing non-image properties to be passed to modules. For example,
if pansharpenBrovey is included in your modules list and you wanted to
change panWeight, you would pass moduleProps as:
moduleProps: {
panWeight: 1.0;
}
Refer to the WebGL Modules documentation to see available props exposed by each module.
BitmapLayer Props¶
This layer inherits all props from the built-in deck.gl
BitmapLayer.