Hi @Lex_Leo and @chase
Please see the snippet below:
from eolearn.core import (
EOPatch, FeatureType, OverwritePermission,
SaveTask, LoadTask, MergeEOPatchesTask,
EOTask
)
from eolearn.io import SentinelHubInputTask
from sentinelhub import (
CRS, BBox, DataCollection, bbox_to_dimensions
)
import datetime as dt
class AppendSHData(EOTask):
def __init__(self, sentinelhub_task):
self.shtask = sentinelhub_task
def execute(self, eopatch):
bbox = eopatch.bbox
time_interval = eopatch.timestamp[-1], dt.datetime.now()
new_eop = self.shtask.execute(bbox=bbox, time_interval=time_interval)
updated_eop = EOPatch.merge(eopatch, new_eop)
return updated_eop
s2_data_task = SentinelHubInputTask(
data_collection=DataCollection.SENTINEL2_L1C,
size=bbox_to_dimensions(bbox, 40),
bands_feature=(FeatureType.DATA, 'S2L1C'),
bands=['B02','B03','B04'],
additional_data=[(FeatureType.MASK, 'dataMask')],
maxcc=0.5,
time_difference=dt.timedelta(hours=2)
)
# creation of "existing" eopatch:
bbox = BBox(((460000, 510000), (465000, 515000)), crs=CRS('32633'))
time_interval = dt.date(2021,12,15), dt.date(2021,12,31)
eop = s2_data_task.execute(bbox=bbox, time_interval=time_interval)
# init the append task
update = AppendSHData(s2_data_task)
# create new eo-patch executing update task on existing eo-patch
new_eop = update.execute(eop)
print("Differences:")
print(set(new_eop.timestamp).difference(set(eop.timestamp)))
The AppendSHData
will use SentinelHubInputTask
(could be SentinelHubEvalscriptTask
as well), execute it on existing eopatch metadata (bbox and last timestamp), and merge the new observations to existing eo-patch.
Please let me know if that helps.