I suggest that instead of forcing a float32 dtype, it's better to check the input raster data type first. If the input data type is float64 or float32, the output should use the original data type. If integer, then the output can use float32.
Also, I think it's better to set fill and dtype as two input parameters for the _zonal_stats_rasterize function so that the user can be aware of that and may change it as needed for memory efficiency. Cheers.
Originally posted by @coolzhao in #85