Skip to content

Combining of textures with different resolutions (e.g. Sentinel-2 bands) #142

@kylebarron

Description

@kylebarron

Some satellites have different resolutions per band. For example, here's the reference of Sentinel 2A and 2B bands and resolution. The spatial resolution varies between 10 to 60 meters per band.

Band Number Central wavelength (nm) Bandwidth (nm) Central wavelength (nm) Bandwidth (nm) Spatial resolution (m)
1 442.7 20 442.3 20 60
2 492.7 65 492.3 65 10
3 559.8 35 558.9 35 10
4 664.6 30 664.9 31 10
5 704.1 14 703.8 15 20
6 740.5 14 739.1 13 20
7 782.8 19 779.7 19 20
8 832.8 105 832.9 104 10
8a 864.7 21 864.0 21 20
9 945.1 19 943.2 20 60
10 1373.5 29 1376.9 29 60
11 1613.7 90 1610.4 94 20
12 2202.4 174 2185.7 184 20

For CPU operations, you wouldn't be able to do anything relating to multiple bands with different resolutions until you resampled all the arrays to have the same size.

On the GPU you actually don't have this problem. Because all arrays are effectively being resampled to the screen pixels anyways, so the GPU will compare those resampled values for each screen pixel. I think all that matters is the sampling parameters that you pass to each texture, so that the GPU knows whether it should use linear or nearest sampling for each of them.

We could have other tricky bits still. The COGLayer assumes a single tiling layout. If you have two different bands with different resolutions, and those bands have different internal tiling pyramids, then you'll still have to align those grids. One of the COGs won't be fetched exactly according to its internal layout. This will have a few duplicate tile fetches, but that's ok.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions