code: def get_vrt_transform(src_dst, bounds, bounds_crs="epsg:3857"):
      
      dst_transform, _, _ = calculate_default_transform(
          src_dst.crs, bounds_crs, src_dst.width, src_dst.height, *src_dst.bounds
      )
      w, s, e, n = bounds
      vrt_width = math.ceil((e - w) / dst_transform.a)
      vrt_height = math.ceil((s - n) / dst_transform.e)
  
      vrt_transform = transform.from_bounds(w, s, e, n, vrt_width, vrt_height)
  
      return vrt_transform, vrt_width, vrt_height
docs: Calculate VRT transform.
  
      Attributes
      ----------
      src_dst : rasterio.io.DatasetReader
          Rasterio io.DatasetReader object
      bounds : list
          Bounds (left, bottom, right, top)
      bounds_crs : str
          Coordinate reference system string (default "epsg:3857")
  
      Returns
      -------
      vrt_transform: Affine
          Output affine transformation matrix
      vrt_width, vrt_height: int
          Output dimensions