docs: def generate_tile_coordinates_from_pixels(roi, scale, size):
      """Yields N x M rectangular tiles for a region of interest.
  
      Parameters
      ----------
      roi : GeoVector
          Region of interest
      scale : float
          Scale factor (think of it as pixel resolution)
      size : tuple
          Pixel size in (width, height) to be multiplied by the scale factor
  
      Yields
      ------
      ~telluric.vectors.GeoVector
  
      """
      if not all(isinstance(coord, int) for coord in size):
          raise ValueError("Pixel size must be a tuple of integers")
  
      width = size[0] * scale
      height = size[1] * scale
  
      minx, miny, maxx, maxy = roi.get_shape(roi.crs).bounds
  
      num_w = np.ceil((maxx - minx) / width)
      num_h = np.ceil((maxy - miny) / height)
  
      new_roi = GeoVector.from_bounds(
          xmin=minx, ymin=miny,
          xmax=minx + num_w * width, ymax=miny + num_h * height,
          crs=roi.crs
      )
  
      yield from generate_tile_coordinates(new_roi, (num_w, num_h))