docs: def execute(self, eopatch):
          """ Execute function which adds new vector layer to the EOPatch
  
          :param eopatch: input EOPatch
          :type eopatch: EOPatch
          :return: New EOPatch with added vector layer
          :rtype: EOPatch
          """
          for raster_ft, raster_fn, vector_fn in self.feature_gen(eopatch):
              vector_ft = FeatureType.VECTOR_TIMELESS if raster_ft.is_timeless() else FeatureType.VECTOR
  
              raster = eopatch[raster_ft][raster_fn]
              height, width = raster.shape[:2] if raster_ft.is_timeless() else raster.shape[1: 3]
  
              if self.raster_dtype:
                  raster = raster.astype(self.raster_dtype)
  
              data_transform = rasterio.transform.from_bounds(*eopatch.bbox, width=width, height=height)
  
              crs = eopatch.bbox.get_crs()
  
              if raster_ft.is_timeless():
                  eopatch[vector_ft][vector_fn] = self._vectorize_single_raster(raster, data_transform, crs)
              else:
                  gpd_list = [self._vectorize_single_raster(raster[time_idx, ...], data_transform, crs,
                                                            timestamp=eopatch.timestamp[time_idx])
                              for time_idx in range(raster.shape[0])]
  
                  eopatch[vector_ft][vector_fn] = GeoDataFrame(pd.concat(gpd_list, ignore_index=True),
                                                               crs=gpd_list[0].crs)
  
          return eopatch