The Situation
I have a tile spanning 10° north-south (n-s) and 10° east-west (e-w), e.g. from 10-20W and 10-20N. This tile contains multiple pixels, e.g. with a resolution of n-s and e-w of 100m at the equator (~0.0008°). This raster contains information of biomass in tons/hectare (for every pixel).
These 10x10° tiles span the whole world and are currently in EPSG:4326 - WGS 84.
In the end, I would like the absolute biomass in every pixel, and therefore need to multiply the tons/hectare information with the corresponding pixel size.
I am currently using this Determine area of cell in raster (QGIS) to create a new raster, and then do raster multiplication with the tons/hectare raster.
The Question
How can I calculate the area of every 100x100m pixel in Rasterio? I am looking for an approach that works world-wide. If possible also without creating a new raster, but rather multiplying the tons/hectare raster "inplace" with its pixel area.
I would already be happy if the current code I am using could be "translated" to Rasterio, as I am a bit confused between GDAL's raster.GetGeoTransform() and Rasterio's raster.transform.