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.
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.
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.