I was looking into why styling wind in non EPSG:4326 projections was not performant especially when zoomed in on the Map. The current coverage data has a source CRS of EPSG:4326 and we want to reproject and get the coverage rendered in non EPSG:4326 so we can style wind in those projections. I noticed that in the GridCoverageRenderer class in gt-render that there was an affine step to allow warp/affine merging. The comment stated that it was done to best preserve rotations. When you are reprojecting to a non EPSG:4326 projection, the code in lines 834-846 are executed and the affine step leads to a grid range that is very large 40000x40000 in some cases for width and height. That section of the code does not get executed in the projection that we are using when rendering on the Map is EPSG:4326 so we have a much smaller grid range. This leads to significant oversampling and a large number of wind barbs being displayed even when zoomed in with a scale of 15 for example.
My question is what does the affine step do and is it necessary when getting the final GridCoverage2D object? I did notice in projections like EPSG:3574 that the directions and speed of the wind barbs changed significantly based on whether that affine step was being applied.