When reading a raster, the result is a matrix with the value for each pixel. With this data, the simplest thing to do is drawing the value of each pixel.
To draw them, only the canvas option is available for performance reasons, since the amount of pixels is usually very high.
Drawing the GeoTIFF pixels
Let’s see the most important code parts to get this example:
The color scale is created as explained in the color scales page
This is the actual drawing part:
A separate canvas is created, so any pixel drawing won’t affect the background
var data has the pixel values of this new created canvas. The array has four elements for each pixel to represent the RGBA values. It’s the fastest way to draw an image, much more than drawing small rectangles
The iteration is for each pixel in the output canvas, not the original GeoTIFF matrix
To get the position in the values matrix, the output projection must be transformed to lat-lon using projection.invert
Since the GeiTIFF is already in latlon, apply the inverse GeoTransform to get the position in the values matrix
We want to represent the original pixels, in this example, so the pixel position is rounded to get the nearest pixel in the values matrix
The color to use is calculated with the method explained in the color scales page
Interpolating the GeoTIFF pixels to get a smooth image
This example is very similar to the previous one, but the value for each pixel is calculated interpolating the surrounding values with a bilinear interpolation.