diff --git a/docs/api/datasets.rst b/docs/api/datasets.rst index 661dd30f2b4..fc2c9763ae1 100644 --- a/docs/api/datasets.rst +++ b/docs/api/datasets.rst @@ -220,6 +220,7 @@ BigEarthNet ^^^^^^^^^^^ .. autoclass:: BigEarthNet +.. autoclass:: BigEarthNetV2 BioMassters ^^^^^^^^^^^ diff --git a/tests/conf/bigearthnet_all.yaml b/tests/conf/bigearthnet_all.yaml index d24a2af4442..3841248f2ae 100644 --- a/tests/conf/bigearthnet_all.yaml +++ b/tests/conf/bigearthnet_all.yaml @@ -10,6 +10,6 @@ data: init_args: batch_size: 1 dict_kwargs: - root: 'tests/data/bigearthnet' + root: 'tests/data/bigearthnet/v1' bands: 'all' num_classes: 19 diff --git a/tests/conf/bigearthnet_s1.yaml b/tests/conf/bigearthnet_s1.yaml index 78f01ebb81a..ccbe0a4be10 100644 --- a/tests/conf/bigearthnet_s1.yaml +++ b/tests/conf/bigearthnet_s1.yaml @@ -10,6 +10,6 @@ data: init_args: batch_size: 1 dict_kwargs: - root: 'tests/data/bigearthnet' + root: 'tests/data/bigearthnet/v1' bands: 's1' num_classes: 19 diff --git a/tests/conf/bigearthnet_s2.yaml b/tests/conf/bigearthnet_s2.yaml index e1afa68c126..030ecb96023 100644 --- a/tests/conf/bigearthnet_s2.yaml +++ b/tests/conf/bigearthnet_s2.yaml @@ -10,6 +10,6 @@ data: init_args: batch_size: 1 dict_kwargs: - root: 'tests/data/bigearthnet' + root: 'tests/data/bigearthnet/v1' bands: 's2' num_classes: 19 diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0.tar.gz b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0.tar.gz similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0.tar.gz rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0.tar.gz diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VH.tif b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VH.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VH.tif rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VH.tif diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VV.tif b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VV.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VV.tif rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VV.tif diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_labels_metadata.json b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_labels_metadata.json similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_labels_metadata.json rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_labels_metadata.json diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_VH.tif b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_VH.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_VH.tif rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_VH.tif diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_VV.tif b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_VV.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_VV.tif rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_VV.tif diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_labels_metadata.json b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_labels_metadata.json similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_labels_metadata.json rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_40_labels_metadata.json diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_VH.tif b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_VH.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_VH.tif rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_VH.tif diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_VV.tif b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_VV.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_VV.tif rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_VV.tif diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_labels_metadata.json b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_labels_metadata.json similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_labels_metadata.json rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_41_labels_metadata.json diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_VH.tif b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_VH.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_VH.tif rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_VH.tif diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_VV.tif b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_VV.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_VV.tif rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_VV.tif diff --git a/tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_labels_metadata.json b/tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_labels_metadata.json similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_labels_metadata.json rename to tests/data/bigearthnet/v1/BigEarthNet-S1-v1.0/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_42_41_labels_metadata.json diff --git a/tests/data/bigearthnet/BigEarthNet-S2-v1.0.tar.gz b/tests/data/bigearthnet/v1/BigEarthNet-S2-v1.0.tar.gz similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-S2-v1.0.tar.gz rename to tests/data/bigearthnet/v1/BigEarthNet-S2-v1.0.tar.gz diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B01.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B01.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B01.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B01.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B02.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B02.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B02.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B02.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B03.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B03.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B03.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B03.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B04.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B04.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B04.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B04.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B05.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B05.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B05.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B05.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B06.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B06.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B06.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B06.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B07.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B07.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B07.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B07.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B08.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B08.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B08.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B08.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B09.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B09.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B09.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B09.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B11.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B11.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B11.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B11.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B12.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B12.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B12.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B12.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B8A.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B8A.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B8A.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_B8A.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_labels_metadata.json b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_labels_metadata.json similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_labels_metadata.json rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_39/S2A_MSIL2A_20170613T101031_61_39_labels_metadata.json diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B01.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B01.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B01.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B01.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B02.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B02.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B02.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B02.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B03.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B03.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B03.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B03.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B04.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B04.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B04.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B04.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B05.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B05.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B05.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B05.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B06.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B06.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B06.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B06.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B07.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B07.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B07.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B07.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B08.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B08.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B08.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B08.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B09.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B09.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B09.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B09.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B11.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B11.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B11.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B11.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B12.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B12.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B12.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B12.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B8A.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B8A.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B8A.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_B8A.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_labels_metadata.json b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_labels_metadata.json similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_labels_metadata.json rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_40/S2A_MSIL2A_20170613T101031_61_40_labels_metadata.json diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B01.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B01.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B01.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B01.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B02.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B02.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B02.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B02.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B03.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B03.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B03.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B03.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B04.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B04.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B04.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B04.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B05.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B05.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B05.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B05.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B06.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B06.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B06.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B06.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B07.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B07.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B07.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B07.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B08.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B08.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B08.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B08.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B09.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B09.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B09.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B09.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B11.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B11.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B11.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B11.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B12.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B12.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B12.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B12.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B8A.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B8A.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B8A.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_B8A.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_labels_metadata.json b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_labels_metadata.json similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_labels_metadata.json rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_41/S2A_MSIL2A_20170613T101031_61_41_labels_metadata.json diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B01.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B01.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B01.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B01.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B02.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B02.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B02.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B02.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B03.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B03.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B03.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B03.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B04.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B04.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B04.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B04.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B05.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B05.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B05.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B05.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B06.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B06.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B06.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B06.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B07.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B07.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B07.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B07.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B08.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B08.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B08.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B08.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B09.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B09.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B09.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B09.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B11.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B11.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B11.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B11.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B12.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B12.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B12.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B12.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B8A.tif b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B8A.tif similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B8A.tif rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_B8A.tif diff --git a/tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_labels_metadata.json b/tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_labels_metadata.json similarity index 100% rename from tests/data/bigearthnet/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_labels_metadata.json rename to tests/data/bigearthnet/v1/BigEarthNet-v1.0/S2A_MSIL2A_20170613T101031_61_42/S2A_MSIL2A_20170613T101031_61_42_labels_metadata.json diff --git a/tests/data/bigearthnet/bigearthnet-test.csv b/tests/data/bigearthnet/v1/bigearthnet-test.csv similarity index 100% rename from tests/data/bigearthnet/bigearthnet-test.csv rename to tests/data/bigearthnet/v1/bigearthnet-test.csv diff --git a/tests/data/bigearthnet/bigearthnet-train.csv b/tests/data/bigearthnet/v1/bigearthnet-train.csv similarity index 100% rename from tests/data/bigearthnet/bigearthnet-train.csv rename to tests/data/bigearthnet/v1/bigearthnet-train.csv diff --git a/tests/data/bigearthnet/bigearthnet-val.csv b/tests/data/bigearthnet/v1/bigearthnet-val.csv similarity index 100% rename from tests/data/bigearthnet/bigearthnet-val.csv rename to tests/data/bigearthnet/v1/bigearthnet-val.csv diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1.tar.gzaa b/tests/data/bigearthnet/v2/BigEarthNet-S1.tar.gzaa new file mode 100644 index 00000000000..74af032a7d9 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1.tar.gzaa differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1.tar.gzab b/tests/data/bigearthnet/v2/BigEarthNet-S1.tar.gzab new file mode 100644 index 00000000000..c8e3cc0ae4b Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1.tar.gzab differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170613T165043/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VH.tif b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170613T165043/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VH.tif new file mode 100644 index 00000000000..a73c24fc8e4 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170613T165043/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VH.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170613T165043/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VV.tif b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170613T165043/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VV.tif new file mode 100644 index 00000000000..7d23ea0fd1c Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170613T165043/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39/S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39_VV.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170614T165154/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84_VH.tif b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170614T165154/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84_VH.tif new file mode 100644 index 00000000000..b205aaccdea Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170614T165154/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84_VH.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170614T165154/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84_VV.tif b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170614T165154/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84_VV.tif new file mode 100644 index 00000000000..0ad8ecb7716 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170614T165154/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84/S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84_VV.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170615T170156/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12_VH.tif b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170615T170156/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12_VH.tif new file mode 100644 index 00000000000..9186bfa7258 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170615T170156/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12_VH.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170615T170156/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12_VV.tif b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170615T170156/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12_VV.tif new file mode 100644 index 00000000000..7320e6ad2bc Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170615T170156/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12/S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12_VV.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170618T165722/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45_VH.tif b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170618T165722/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45_VH.tif new file mode 100644 index 00000000000..f8cd611f90e Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170618T165722/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45_VH.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170618T165722/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45_VV.tif b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170618T165722/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45_VV.tif new file mode 100644 index 00000000000..fb521a677aa Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S1/S1A_IW_GRDH_1SDV_20170618T165722/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45/S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45_VV.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2.tar.gzaa b/tests/data/bigearthnet/v2/BigEarthNet-S2.tar.gzaa new file mode 100644 index 00000000000..99eab055ccc Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2.tar.gzaa differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2.tar.gzab b/tests/data/bigearthnet/v2/BigEarthNet-S2.tar.gzab new file mode 100644 index 00000000000..70d65d5773f Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2.tar.gzab differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B01.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B01.tif new file mode 100644 index 00000000000..547a64d4be9 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B01.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B02.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B02.tif new file mode 100644 index 00000000000..68bd945fb4f Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B02.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B03.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B03.tif new file mode 100644 index 00000000000..a30cb9faeca Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B03.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B04.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B04.tif new file mode 100644 index 00000000000..710742b771f Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B04.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B05.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B05.tif new file mode 100644 index 00000000000..cfb486103b0 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B05.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B06.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B06.tif new file mode 100644 index 00000000000..880bbb53757 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B06.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B07.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B07.tif new file mode 100644 index 00000000000..896f956085d Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B07.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B08.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B08.tif new file mode 100644 index 00000000000..0d94746fa80 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B08.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B09.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B09.tif new file mode 100644 index 00000000000..53085fde8eb Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B09.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B11.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B11.tif new file mode 100644 index 00000000000..2a6a8f6100c Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B11.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B12.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B12.tif new file mode 100644 index 00000000000..392fc251698 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B12.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B8A.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B8A.tif new file mode 100644 index 00000000000..31f852537d0 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_B8A.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B01.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B01.tif new file mode 100644 index 00000000000..f26b7de4e43 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B01.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B02.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B02.tif new file mode 100644 index 00000000000..256f50514f7 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B02.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B03.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B03.tif new file mode 100644 index 00000000000..eff61383783 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B03.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B04.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B04.tif new file mode 100644 index 00000000000..6cc3ec48241 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B04.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B05.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B05.tif new file mode 100644 index 00000000000..6949a3e3810 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B05.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B06.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B06.tif new file mode 100644 index 00000000000..98fa8db54e7 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B06.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B07.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B07.tif new file mode 100644 index 00000000000..c7bd35f184f Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B07.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B08.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B08.tif new file mode 100644 index 00000000000..e0f72ab0971 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B08.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B09.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B09.tif new file mode 100644 index 00000000000..2c8ee79515e Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B09.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B11.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B11.tif new file mode 100644 index 00000000000..187ffd76e0b Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B11.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B12.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B12.tif new file mode 100644 index 00000000000..2cd113266f8 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B12.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B8A.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B8A.tif new file mode 100644 index 00000000000..3676f62a682 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_B8A.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B01.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B01.tif new file mode 100644 index 00000000000..f4ec93cd941 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B01.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B02.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B02.tif new file mode 100644 index 00000000000..c341a5973b3 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B02.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B03.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B03.tif new file mode 100644 index 00000000000..b2a54b436c0 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B03.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B04.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B04.tif new file mode 100644 index 00000000000..e628ccb09a0 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B04.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B05.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B05.tif new file mode 100644 index 00000000000..36f7e0ac6ac Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B05.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B06.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B06.tif new file mode 100644 index 00000000000..dfbfa066ccd Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B06.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B07.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B07.tif new file mode 100644 index 00000000000..e5be6802393 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B07.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B08.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B08.tif new file mode 100644 index 00000000000..56e3d96622a Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B08.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B09.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B09.tif new file mode 100644 index 00000000000..3a13c55d76e Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B09.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B11.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B11.tif new file mode 100644 index 00000000000..710032c236e Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B11.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B12.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B12.tif new file mode 100644 index 00000000000..78fe095a670 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B12.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B8A.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B8A.tif new file mode 100644 index 00000000000..cd75ef8284c Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_B8A.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B01.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B01.tif new file mode 100644 index 00000000000..cbe86d058e5 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B01.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B02.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B02.tif new file mode 100644 index 00000000000..81d28d31b6b Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B02.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B03.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B03.tif new file mode 100644 index 00000000000..1580ace2e83 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B03.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B04.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B04.tif new file mode 100644 index 00000000000..5f5ad068d43 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B04.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B05.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B05.tif new file mode 100644 index 00000000000..51dfa1669d5 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B05.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B06.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B06.tif new file mode 100644 index 00000000000..856de11a359 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B06.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B07.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B07.tif new file mode 100644 index 00000000000..747781a3d67 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B07.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B08.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B08.tif new file mode 100644 index 00000000000..1d89e13aa0b Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B08.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B09.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B09.tif new file mode 100644 index 00000000000..af88cdbecae Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B09.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B11.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B11.tif new file mode 100644 index 00000000000..4fd6ee67b53 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B11.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B12.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B12.tif new file mode 100644 index 00000000000..26583dad909 Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B12.tif differ diff --git a/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B8A.tif b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B8A.tif new file mode 100644 index 00000000000..dbe295eb56b Binary files /dev/null and b/tests/data/bigearthnet/v2/BigEarthNet-S2/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_B8A.tif differ diff --git a/tests/data/bigearthnet/v2/Reference_Maps.tar.gzaa b/tests/data/bigearthnet/v2/Reference_Maps.tar.gzaa new file mode 100644 index 00000000000..9f405f866f6 Binary files /dev/null and b/tests/data/bigearthnet/v2/Reference_Maps.tar.gzaa differ diff --git a/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_reference_map.tif b/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_reference_map.tif new file mode 100644 index 00000000000..598416c8bbc Binary files /dev/null and b/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57/S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57_reference_map.tif differ diff --git a/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_reference_map.tif b/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_reference_map.tif new file mode 100644 index 00000000000..7c3616d8d40 Binary files /dev/null and b/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38/S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38_reference_map.tif differ diff --git a/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_reference_map.tif b/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_reference_map.tif new file mode 100644 index 00000000000..b0c7053c4b1 Binary files /dev/null and b/tests/data/bigearthnet/v2/Reference_Maps/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34/S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34_reference_map.tif differ diff --git a/tests/data/bigearthnet/v2/Reference_Maps/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_reference_map.tif b/tests/data/bigearthnet/v2/Reference_Maps/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_reference_map.tif new file mode 100644 index 00000000000..6fca195a962 Binary files /dev/null and b/tests/data/bigearthnet/v2/Reference_Maps/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23/S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23_reference_map.tif differ diff --git a/tests/data/bigearthnet/v2/data.py b/tests/data/bigearthnet/v2/data.py new file mode 100644 index 00000000000..ee3664fc9f9 --- /dev/null +++ b/tests/data/bigearthnet/v2/data.py @@ -0,0 +1,238 @@ +#!/usr/bin/env python3 + +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. + +import hashlib +import os +import shutil +from pathlib import Path + +import numpy as np +import pandas as pd +import rasterio + +# Constants +IMG_SIZE = 120 +ROOT_DIR = '.' +CHUNK_SIZE = 2**12 + +# Sample patch definitions +SAMPLE_PATCHES = [ + { + 's2_name': 'S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP_26_57', + 's2_base': 'S2A_MSIL2A_20170613T101031_N9999_R022_T33UUP', + 's1_name': 'S1A_IW_GRDH_1SDV_20170613T165043_33UUP_61_39', + 's1_base': 'S1A_IW_GRDH_1SDV_20170613T165043', + 'split': 'train', + 'labels': [ + 'Urban fabric', + 'Industrial or commercial units', + 'Complex cultivation patterns', + ], + }, + { + 's2_name': 'S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT_45_38', + 's2_base': 'S2A_MSIL2A_20170614T102021_N9999_R122_T32TQT', + 's1_name': 'S1A_IW_GRDH_1SDV_20170614T165154_32TQT_71_84', + 's1_base': 'S1A_IW_GRDH_1SDV_20170614T165154', + 'split': 'train', + 'labels': [ + 'Broad-leaved forest', + 'Mixed forest', + 'Transitional woodland, shrub', + ], + }, + { + 's2_name': 'S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS_45_23', + 's2_base': 'S2B_MSIL2A_20170615T102019_N9999_R122_T32TNS', + 's1_name': 'S1A_IW_GRDH_1SDV_20170615T170156_32TNS_77_12', + 's1_base': 'S1A_IW_GRDH_1SDV_20170615T170156', + 'split': 'val', + 'labels': ['Arable land', 'Pastures', 'Inland waters'], + }, + { + 's2_name': 'S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR_89_34', + 's2_base': 'S2A_MSIL2A_20170618T101021_N9999_R022_T32TQR', + 's1_name': 'S1A_IW_GRDH_1SDV_20170618T165722_32TQR_92_45', + 's1_base': 'S1A_IW_GRDH_1SDV_20170618T165722', + 'split': 'test', + 'labels': [ + 'Coniferous forest', + 'Natural grassland and sparsely vegetated areas', + ], + }, +] + +LABEL_TO_CLC = { + 'Urban fabric': 111, + 'Industrial or commercial units': 121, + 'Arable land': 211, + 'Permanent crops': 221, + 'Pastures': 231, + 'Complex cultivation patterns': 242, + 'Land principally occupied by agriculture, with significant areas of natural vegetation': 243, + 'Agro-forestry areas': 244, + 'Broad-leaved forest': 311, + 'Coniferous forest': 312, + 'Mixed forest': 313, + 'Natural grassland and sparsely vegetated areas': 321, + 'Moors, heathland and sclerophyllous vegetation': 322, + 'Transitional woodland, shrub': 324, + 'Beaches, dunes, sands': 331, + 'Inland wetlands': 411, + 'Coastal wetlands': 421, + 'Inland waters': 511, + 'Marine waters': 523, +} + +S1_BANDS = ['VV', 'VH'] +S2_BANDS = [ + 'B01', + 'B02', + 'B03', + 'B04', + 'B05', + 'B06', + 'B07', + 'B08', + 'B8A', + 'B09', + 'B11', + 'B12', +] + + +def create_directory_structure() -> None: + """Create the base directory structure""" + + for dir_name in ['BigEarthNet-S1', 'BigEarthNet-S2', 'Reference_Maps']: + if os.path.exists(os.path.join(ROOT_DIR, dir_name)): + shutil.rmtree(os.path.join(ROOT_DIR, dir_name)) + Path(os.path.join(ROOT_DIR, dir_name)).mkdir(parents=True, exist_ok=True) + + +def create_dummy_image( + path: str, shape: tuple[int, int], dtype: str, labels: list[str] | None = None +) -> None: + """Create a dummy GeoTIFF file""" + if dtype == 's1': + data = np.random.randint(-25, 0, shape).astype(np.int16) + elif dtype == 's2': + data = np.random.randint(0, 10000, shape).astype(np.int16) + else: # reference map + clc_codes = [LABEL_TO_CLC[label] for label in labels] + data = np.random.choice(clc_codes, size=shape).astype(np.uint16) + + with rasterio.open( + path, + 'w', + driver='GTiff', + height=shape[0], + width=shape[1], + count=1, + dtype=data.dtype, + crs='+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs', + transform=rasterio.transform.from_origin(0, 0, 10, 10), + ) as dst: + dst.write(data, 1) + + +def generate_sample(patch_info: dict) -> None: + """Generate a complete sample with S1, S2 and reference data""" + # Create S1 data + s1_dir = os.path.join( + ROOT_DIR, 'BigEarthNet-S1', patch_info['s1_base'], patch_info['s1_name'] + ) + os.makedirs(s1_dir, exist_ok=True) + + for band in S1_BANDS: + path = os.path.join(s1_dir, f'{patch_info["s1_name"]}_{band}.tif') + create_dummy_image(path, (IMG_SIZE, IMG_SIZE), 's1') + + # Create S2 data + s2_dir = os.path.join( + ROOT_DIR, 'BigEarthNet-S2', patch_info['s2_base'], patch_info['s2_name'] + ) + os.makedirs(s2_dir, exist_ok=True) + + for band in S2_BANDS: + path = os.path.join(s2_dir, f'{patch_info["s2_name"]}_{band}.tif') + create_dummy_image(path, (IMG_SIZE, IMG_SIZE), 's2') + + # Create reference map + ref_dir = os.path.join( + ROOT_DIR, 'Reference_Maps', patch_info['s2_base'], patch_info['s2_name'] + ) + os.makedirs(ref_dir, exist_ok=True) + + path = os.path.join(ref_dir, f'{patch_info["s2_name"]}_reference_map.tif') + create_dummy_image( + path, (IMG_SIZE, IMG_SIZE), 'reference', labels=patch_info['labels'] + ) + + +def create_metadata() -> None: + """Create metadata parquet file""" + records = [] + + for patch in SAMPLE_PATCHES: + records.append( + { + 'patch_id': patch['s2_name'], + 's1_name': patch['s1_name'], + 'split': patch['split'], + 'labels': patch['labels'], + } + ) + + df = pd.DataFrame.from_records(records) + df.to_parquet(os.path.join(ROOT_DIR, 'metadata.parquet')) + + +def main() -> None: + create_directory_structure() + + for patch_info in SAMPLE_PATCHES: + generate_sample(patch_info) + + create_metadata() + + for directory in ['BigEarthNet-S1', 'BigEarthNet-S2', 'Reference_Maps']: + shutil.make_archive(directory, 'gztar', '.', directory) + tar_path = f'{directory}.tar.gz' + + split_paths = [] + if directory.startswith('BigEarthNet-'): + with open(tar_path, 'rb') as f: + content = f.read() + file_size = len(content) + midpoint = file_size // 2 + splits = [content[:midpoint], content[midpoint:]] + suffixes = ['aa', 'ab'] + for suf, split_data in zip(suffixes, splits): + split_name = f'{directory}.tar.gz{suf}' + with open(split_name, 'wb') as g: + g.write(split_data) + split_paths.append(split_name) + + elif directory == 'Reference_Maps': + # For Reference_Maps, create only one split with suffix "aa" + split_name = f'{directory}.tar.gzaa' + with open(tar_path, 'rb') as f: + with open(split_name, 'wb') as g: + g.write(f.read()) + split_paths.append(split_name) + + os.remove(tar_path) + + for path in split_paths: + hash_md5 = hashlib.md5() + with open(path, 'rb') as f: + for chunk in iter(lambda: f.read(4096), b''): + hash_md5.update(chunk) + print(path, hash_md5.hexdigest()) + + +if __name__ == '__main__': + main() diff --git a/tests/data/bigearthnet/v2/metadata.parquet b/tests/data/bigearthnet/v2/metadata.parquet new file mode 100644 index 00000000000..7fa48f0c23f Binary files /dev/null and b/tests/data/bigearthnet/v2/metadata.parquet differ diff --git a/tests/datasets/test_bigearthnet.py b/tests/datasets/test_bigearthnet.py index c93240e21f1..d53f989b79e 100644 --- a/tests/datasets/test_bigearthnet.py +++ b/tests/datasets/test_bigearthnet.py @@ -12,7 +12,9 @@ from _pytest.fixtures import SubRequest from pytest import MonkeyPatch -from torchgeo.datasets import BigEarthNet, DatasetNotFoundError +from torchgeo.datasets import BigEarthNet, BigEarthNetV2, DatasetNotFoundError + +pytest.importorskip('pyarrow') class TestBigEarthNet: @@ -22,7 +24,7 @@ class TestBigEarthNet: def dataset( self, monkeypatch: MonkeyPatch, tmp_path: Path, request: SubRequest ) -> BigEarthNet: - data_dir = os.path.join('tests', 'data', 'bigearthnet') + data_dir = os.path.join('tests', 'data', 'bigearthnet', 'v1') metadata = { 's1': { 'url': os.path.join(data_dir, 'BigEarthNet-S1-v1.0.tar.gz'), @@ -140,3 +142,132 @@ def test_plot(self, dataset: BigEarthNet) -> None: x['prediction'] = x['label'].clone() dataset.plot(x) plt.close() + + +class TestBigEarthNetV2: + @pytest.fixture(params=zip(['all', 's1', 's2'], ['train', 'val', 'test'])) + def dataset( + self, monkeypatch: MonkeyPatch, tmp_path: Path, request: SubRequest + ) -> BigEarthNetV2: + url = os.path.join('tests', 'data', 'bigearthnet', 'v2', '{}') + monkeypatch.setattr(BigEarthNetV2, 'url', url) + metadata = { + 's1': { + 'files': { + 'BigEarthNet-S1.tar.gzaa': '8101e604552c010178af0bf3645cf391', + 'BigEarthNet-S1.tar.gzab': 'e77d4408fc4594407b7b50ec0d43053c', + } + }, + 's2': { + 'files': { + 'BigEarthNet-S2.tar.gzaa': '9c611dc8598b20830d2d79f5a73df294', + 'BigEarthNet-S2.tar.gzab': '4e6904c7f60504cceaf90a35401e4262', + } + }, + 'maps': { + 'files': {'Reference_Maps.tar.gzaa': 'dd129c68c4902bfae48d7caada03fdc0'} + }, + 'metadata': { + 'files': {'metadata.parquet': 'ad100d6b020f2e693673f77ebbe57891'} + }, + } + monkeypatch.setattr(BigEarthNetV2, 'metadata_locs', metadata) + + bands, split = request.param + + root = tmp_path + transforms = nn.Identity() + return BigEarthNetV2( + root, split, bands, transforms, download=True, checksum=True + ) + + def test_getitem(self, dataset: BigEarthNetV2) -> None: + """Test loading data.""" + x = dataset[0] + + if dataset.bands in ['s2', 'all']: + if dataset.bands == 's2': + assert x['image'].shape == (12, 120, 120) + else: + assert x['image_s2'].shape == (12, 120, 120) + + if dataset.bands in ['s1', 'all']: + if dataset.bands == 's1': + assert x['image'].shape == (2, 120, 120) + else: + assert x['image_s1'].shape == (2, 120, 120) + + assert x['mask'].shape == (1, 120, 120) + + assert x['mask'].dtype == torch.int64 + assert x['label'].dtype == torch.int64 + if 'image' in x: + assert x['image'].dtype == torch.float32 + if 'image_s1' in x: + assert x['image_s1'].dtype == torch.float32 + if 'image_s2' in x: + assert x['image_s2'].dtype == torch.float32 + + def test_len(self, dataset: BigEarthNetV2) -> None: + """Test dataset length.""" + if dataset.split == 'train': + assert len(dataset) == 2 + else: + assert len(dataset) == 1 + + def test_already_downloaded(self, dataset: BigEarthNetV2, tmp_path: Path) -> None: + BigEarthNetV2( + root=tmp_path, bands=dataset.bands, split=dataset.split, download=True + ) + + def test_not_downloaded(self, tmp_path: Path) -> None: + """Test error handling when data not present.""" + with pytest.raises(DatasetNotFoundError, match='Dataset not found'): + BigEarthNetV2(tmp_path) + + def test_already_downloaded_not_extracted( + self, dataset: BigEarthNetV2, tmp_path: Path + ) -> None: + def rm_files(file_list: list[str]) -> None: + for key, val in dataset.metadata_locs.items(): + if key in file_list: + if key != 'metadata': + shutil.rmtree( + os.path.join(dataset.root, dataset.dir_file_names[key]) + ) + + if dataset.bands == 'all': + rm_files(['s1', 's2', 'maps', 'metadata']) + elif dataset.bands == 's1': + rm_files(['s1', 'metadata', 'maps']) + else: + rm_files(['s2', 'metadata', 'maps']) + + BigEarthNetV2( + root=tmp_path, bands=dataset.bands, split=dataset.split, download=False + ) + + def test_invalid_split(self, tmp_path: Path) -> None: + """Test error on invalid split.""" + with pytest.raises(AssertionError, match='split must be one of'): + BigEarthNetV2(tmp_path, split='invalid') + + def test_invalid_bands(self, tmp_path: Path) -> None: + """Test error on invalid bands selection.""" + with pytest.raises(AssertionError): + BigEarthNetV2(tmp_path, bands='invalid') + + def test_plot(self, dataset: BigEarthNetV2) -> None: + """Test plotting functionality.""" + x = dataset[0].copy() + dataset.plot(x, suptitle='Test') + plt.close() + + # Test without titles + dataset.plot(x, show_titles=False) + plt.close() + + # Test with prediction + x['prediction'] = x['label'].clone() + dataset.plot(x) + plt.close() diff --git a/tests/trainers/test_classification.py b/tests/trainers/test_classification.py index a2f4915d467..ac122463715 100644 --- a/tests/trainers/test_classification.py +++ b/tests/trainers/test_classification.py @@ -242,6 +242,8 @@ class TestMultiLabelClassificationTask: def test_trainer( self, monkeypatch: MonkeyPatch, name: str, fast_dev_run: bool ) -> None: + if name == 'bigearthnet_s2': + pytest.importorskip('pyarrow') config = os.path.join('tests', 'conf', name + '.yaml') monkeypatch.setattr(timm, 'create_model', create_model) @@ -277,7 +279,7 @@ def test_invalid_loss(self) -> None: def test_no_plot_method(self, monkeypatch: MonkeyPatch, fast_dev_run: bool) -> None: monkeypatch.setattr(BigEarthNetDataModule, 'plot', plot) datamodule = BigEarthNetDataModule( - root='tests/data/bigearthnet', batch_size=1, num_workers=0 + root='tests/data/bigearthnet/v1', batch_size=1, num_workers=0 ) model = MultiLabelClassificationTask( model='resnet18', in_channels=14, num_classes=19, loss='bce' @@ -293,7 +295,7 @@ def test_no_plot_method(self, monkeypatch: MonkeyPatch, fast_dev_run: bool) -> N def test_no_rgb(self, monkeypatch: MonkeyPatch, fast_dev_run: bool) -> None: monkeypatch.setattr(BigEarthNetDataModule, 'plot', plot_missing_bands) datamodule = BigEarthNetDataModule( - root='tests/data/bigearthnet', batch_size=1, num_workers=0 + root='tests/data/bigearthnet/v1', batch_size=1, num_workers=0 ) model = MultiLabelClassificationTask( model='resnet18', in_channels=14, num_classes=19, loss='bce' @@ -308,7 +310,7 @@ def test_no_rgb(self, monkeypatch: MonkeyPatch, fast_dev_run: bool) -> None: def test_predict(self, fast_dev_run: bool) -> None: datamodule = PredictMultiLabelClassificationDataModule( - root='tests/data/bigearthnet', batch_size=1, num_workers=0 + root='tests/data/bigearthnet/v1', batch_size=1, num_workers=0 ) model = MultiLabelClassificationTask( model='resnet18', in_channels=14, num_classes=19, loss='bce' diff --git a/torchgeo/datasets/__init__.py b/torchgeo/datasets/__init__.py index 4d757a7b14d..89917033410 100644 --- a/torchgeo/datasets/__init__.py +++ b/torchgeo/datasets/__init__.py @@ -9,7 +9,7 @@ from .airphen import Airphen from .astergdem import AsterGDEM from .benin_cashews import BeninSmallHolderCashews -from .bigearthnet import BigEarthNet +from .bigearthnet import BigEarthNet, BigEarthNetV2 from .biomassters import BioMassters from .bright import BRIGHTDFC2025 from .cabuar import CaBuAr @@ -185,6 +185,7 @@ 'AsterGDEM', 'BeninSmallHolderCashews', 'BigEarthNet', + 'BigEarthNetV2', 'BioMassters', 'BoundingBox', 'CMSGlobalMangroveCanopy', diff --git a/torchgeo/datasets/bigearthnet.py b/torchgeo/datasets/bigearthnet.py index 8900bc9c991..dc8d5cdd026 100644 --- a/torchgeo/datasets/bigearthnet.py +++ b/torchgeo/datasets/bigearthnet.py @@ -6,14 +6,18 @@ import glob import json import os +import textwrap from collections.abc import Callable from typing import ClassVar import matplotlib.pyplot as plt import numpy as np +import pandas as pd import rasterio import torch +from matplotlib.colors import BoundaryNorm, ListedColormap from matplotlib.figure import Figure +from matplotlib.patches import Rectangle from rasterio.enums import Resampling from torch import Tensor @@ -572,3 +576,421 @@ def plot( if suptitle is not None: plt.suptitle(suptitle) return fig + + +class BigEarthNetV2(NonGeoDataset): + """BigEarthNetV2 dataset. + + The `BigEarthNet V2 `__ dataset contains improved labels, improved + geospatial data splits and additionally pixel-level labels from CORINE Land + Cover (CLC) map of 2018. Additionally, some problematic patches from V1 have been removed. + + .. versionadded:: 0.7 + """ + + class_set = BigEarthNet.class_sets[19] + + image_size = BigEarthNet.image_size + + url = 'https://hf.co/datasets/torchgeo/bigearthnet/resolve/3cf3a5910a5302d449fdb8e570e5b78de24fe07f/V2/{}' + + metadata_locs: ClassVar[dict[str, dict[str, dict[str, str]]]] = { + 's1': { + 'files': { + 'BigEarthNet-S1.tar.gzaa': '039b9ce305fc6582b2c3d60d1573f5b7', + 'BigEarthNet-S1.tar.gzab': 'e94f0ea165d04992ca91d8e58e82ec6d', + } + }, + 's2': { + 'files': { + 'BigEarthNet-S2.tar.gzaa': '94e8ed32065234d3ab46353d814778d1', + 'BigEarthNet-S2.tar.gzab': '24c223d9e36166136c13b24a27debe34', + } + }, + 'maps': { + 'files': {'Reference_Maps.tar.gzaa': 'b0cd1f0a31b49fcbfd61d80f963e759d'} + }, + 'metadata': {'files': {'metadata.parquet': '55687065e77b6d0b0f1ff604a6e7b49c'}}, + } + + dir_file_names: ClassVar[dict[str, str]] = { + 's1': 'BigEarthNet-S1', + 's2': 'BigEarthNet-S2', + 'maps': 'Reference_Maps', + 'metadata': 'metadata.parquet', + } + + # https://collections.sentinel-hub.com/corine-land-cover/readme.html + # Table 1 of https://bigearth.net/static/documents/Description_BigEarthNet_v2.pdf + clc_colors: ClassVar[dict[str, str]] = { + 'Urban fabric': '#e6004d', + 'Industrial or commercial units': '#cc4df2', + 'Arable land': '#ffffa8', + 'Permanent crops': '#e68000', + 'Pastures': '#e6e64d', + 'Complex cultivation patterns': '#ffe64d', + 'Land principally occupied by agriculture, with significant areas of natural vegetation': '#e6cc4d', + 'Agro-forestry areas': '#f2cca6', + 'Broad-leaved forest': '#80ff00', + 'Coniferous forest': '#00a600', + 'Mixed forest': '#4dff00', + 'Natural grassland and sparsely vegetated areas': '#ccf24d', + 'Moors, heathland and sclerophyllous vegetation': '#a6ff80', + 'Transitional woodland, shrub': '#a6f200', + 'Beaches, dunes, sands': '#e6e6e6', + 'Inland wetlands': '#a6a6ff', + 'Coastal wetlands': '#ccccff', + 'Inland waters': '#80f2e6', + 'Marine waters': '#e6f2ff', + } + + clc_codes: ClassVar[dict[int, int]] = { + 111: 0, # Continuous Urban fabric + 112: 0, # Discontinuous Urban fabric + 121: 1, # Industrial or commercial units + 211: 2, # Non-irrigated arable land + 212: 2, # Permanently irrigated land + 213: 2, # Rice fields + 221: 3, # Vineyards + 222: 3, # Fruit trees and berry plantations + 223: 3, # Olive groves + 231: 4, # Pastures + 241: 3, # Annual crops with permanent crops + 242: 5, # Complex cultivation patterns + 243: 6, # Land principally occupied by agriculture... + 244: 7, # Agro-forestry areas + 311: 8, # Broad-leaved forest + 312: 9, # Coniferous forest + 313: 10, # Mixed forest + 321: 11, # Natural grassland + 322: 12, # Moors and heathland + 323: 12, # Sclerophyllous vegetation + 324: 13, # Transitional woodland/shrub + 331: 14, # Beaches, dunes, sands + 333: 11, # Sparsely vegetated areas + 411: 15, # Inland marshes + 412: 15, # Peatbogs + 421: 16, # Salt marshes + 422: 16, # Salines + 511: 17, # Water courses + 512: 17, # Water bodies + 521: 18, # Coastal lagoons + 522: 18, # Estuaries + 523: 18, # Sea and ocean + } + + valid_splits = ('train', 'val', 'test') + + def __init__( + self, + root: Path = 'data', + split: str = 'train', + bands: str = 'all', + transforms: Callable[[dict[str, Tensor]], dict[str, Tensor]] | None = None, + download: bool = False, + checksum: bool = False, + ) -> None: + """Initialize a new BigEarthNet V2 dataset instance. + + Args: + root: root directory where dataset can be found + split: train/val/test split to load + bands: load Sentinel-1 bands, Sentinel-2, or both. one of {s1, s2, all} + transforms: a function/transform that takes input sample and its target as + entry and returns a transformed version + download: if True, download dataset and store it in the root directory + checksum: if True, check the MD5 of the downloaded files (may be slow) + + Raises: + DatasetNotFoundError: If dataset is not found and *download* is False. + AssertionError: If *split*, or *bands*, are not valid. + """ + assert split in self.valid_splits, f'split must be one of {self.valid_splits}' + assert bands in ['s1', 's2', 'all'] + self.root = root + self.split = split + self.bands = bands + self.transforms = transforms + self.num_classes = 19 + self.download = download + self.checksum = checksum + self.class2idx = {c: i for i, c in enumerate(self.class_set)} + self._verify() + + self.metadata_df = pd.read_parquet(os.path.join(self.root, 'metadata.parquet')) + self.metadata_df = self.metadata_df[ + self.metadata_df['split'] == self.split + ].reset_index(drop=True) + + # Map chosen classes to ordinal numbers, all others mapped to background class + self.ordinal_map = torch.zeros(19) + for corine, ordinal in self.clc_codes.items(): + self.ordinal_map[ordinal] = corine + + def __len__(self) -> int: + """Return the number of data points in the dataset. + + Returns: + length of the dataset + """ + return len(self.metadata_df) + + def __getitem__(self, index: int) -> dict[str, Tensor]: + """Return an index within the dataset. + + Args: + index: index to return + + Returns: + data and label at that index + """ + sample: dict[str, Tensor] = {} + + match self.bands: + case 's1': + sample['image'] = self._load_image(index, 's1') + case 's2': + sample['image'] = self._load_image(index, 's2') + case 'all': + sample['image_s1'] = self._load_image(index, 's1') + sample['image_s2'] = self._load_image(index, 's2') + + sample['mask'] = self._load_map(index) + sample['label'] = self._load_target(index) + + if self.transforms is not None: + sample = self.transforms(sample) + + return sample + + def _load_image(self, index: int, sensor: str) -> Tensor: + """Generic image loader for both S1 and S2. + + Args: + index: index to return + sensor: 's1' or 's2' + + Returns: + the sensor image + """ + row = self.metadata_df.loc[index] + id_field = 's1_name' if sensor == 's1' else 'patch_id' + patch_id = row[id_field] + if sensor == 's2': + patch_dir = '_'.join(patch_id.split('_')[0:-2]) + else: + patch_dir = '_'.join(patch_id.split('_')[0:-3]) + + paths = glob.glob( + os.path.join( + self.root, self.dir_file_names[sensor], patch_dir, patch_id, '*.tif' + ) + ) + + if sensor == 's2': + paths = sorted(paths, key=sort_sentinel2_bands) + else: + paths = sorted(paths) + + images = [] + for path in paths: + with rasterio.open(path) as dataset: + array = dataset.read( + indexes=1, + out_shape=self.image_size, + out_dtype='int32', + resampling=Resampling.bilinear, + ) + images.append(array) + + return torch.from_numpy(np.stack(images, axis=0)).float() + + def _load_map(self, index: int) -> Tensor: + """Load a single image. + + Args: + index: index to return + + Returns: + the Corine Land Cover map + """ + row = self.metadata_df.loc[index] + patch_id = row['patch_id'] + patch_dir = '_'.join(patch_id.split('_')[0:-2]) + path = os.path.join( + self.root, + self.dir_file_names['maps'], + patch_dir, + patch_id, + patch_id + '_reference_map.tif', + ) + with rasterio.open(path) as dataset: + map = dataset.read(out_dtype='int32') + + tensor = torch.from_numpy(map) + # remap to ordinal values + for corine, ordinal in self.clc_codes.items(): + tensor[tensor == corine] = ordinal + return tensor.long() + + def _load_target(self, index: int) -> Tensor: + """Load the target mask for a single image. + + Args: + index: index to return + + Returns: + the target label + """ + label_names = self.metadata_df.iloc[index]['labels'] + + indices = [self.class2idx[label_names] for label_names in label_names] + + image_target = torch.zeros(self.num_classes, dtype=torch.long) + image_target[indices] = 1 + return image_target + + def _verify(self) -> None: + """Verify the integrity of the dataset.""" + exists = [] + for key, metadata in self.metadata_locs.items(): + exists.append( + os.path.exists(os.path.join(self.root, self.dir_file_names[key])) + ) + + if all(exists): + return + + # check if compressed files already exist + exists = [] + for key, metadata in self.metadata_locs.items(): + if key == 'metadata': + exists.append( + os.path.exists(os.path.join(self.root, self.dir_file_names[key])) + ) + else: + for fname in metadata['files']: + fpath = os.path.join(self.root, fname) + exists.append(os.path.exists(fpath)) + + if all(exists): + return + + if not self.download: + raise DatasetNotFoundError(self) + + self._download() + self._extract() + + def _download(self) -> None: + """Download the required tarball parts using the URL template and md5 sums.""" + for key, meta in self.metadata_locs.items(): + for fname, md5 in meta['files'].items(): + target_path = os.path.join(self.root, fname) + if not os.path.exists(target_path): + download_url(self.url.format(fname), self.root, md5) + + def _extract(self) -> None: + """Extract the tarball parts. + + For each modality (s1, s2, maps), its parts are concatenated together and then extracted. + """ + chunk_size = 2**15 # same as used in torchvision and ssl4eo + for key, meta in self.metadata_locs.items(): + if key == 'metadata': + continue + parts = [os.path.join(self.root, f) for f in meta['files'].keys()] + concat_path = os.path.join(self.root, self.dir_file_names[key] + '.tar.gz') + with open(concat_path, 'wb') as outfile: + for part in parts: + with open(part, 'rb') as g: + while chunk := g.read(chunk_size): + outfile.write(chunk) + extract_archive(concat_path, self.root) + + def plot( + self, + sample: dict[str, Tensor], + show_titles: bool = True, + suptitle: str | None = None, + ) -> Figure: + """Plot a sample from the dataset. + + Args: + sample: a sample returned by :meth:`__getitem__` + show_titles: flag indicating whether to show titles above each panel + suptitle: optional string to use as a suptitle + + Returns: + a matplotlib Figure with the rendered sample + """ + fig, axes = plt.subplots(1, 2 if self.bands != 'all' else 3, figsize=(12, 4)) + + if self.bands in ['s2', 'all']: + s2_img = sample['image_s2' if self.bands == 'all' else 'image'] + rgb = np.rollaxis(s2_img[[3, 2, 1]].numpy(), 0, 3) + axes[0].imshow(np.clip(rgb / 2000, 0, 1)) + if show_titles: + axes[0].set_title('Sentinel-2 RGB') + axes[0].axis('off') + + if self.bands in ['s1', 'all']: + idx = 0 if self.bands == 's1' else 1 + s1_img = sample['image_s1' if self.bands == 'all' else 'image'] + axes[idx].imshow(s1_img[0].numpy()) + if show_titles: + axes[idx].set_title('Sentinel-1 VV') + axes[idx].axis('off') + + # Handle mask plotting + mask_idx = 1 if self.bands != 'all' else 2 + mask = sample['mask'][0].numpy() + + # Get unique ordinal labels from mask + unique_labels = sorted(np.unique(mask)) + + # Map ordinal labels to class names and colors directly + colors = [] + class_names = [] + for label in unique_labels: + name = self.class_set[label] # Get class name from ordinal index + colors.append(self.clc_colors[name]) # Get color for class name + class_names.append(name) + + # Create custom colormap + cmap = ListedColormap(colors) + bounds = [*unique_labels, unique_labels[-1] + 1] + norm = BoundaryNorm(bounds, len(colors)) + + axes[mask_idx].imshow(mask, cmap=cmap, norm=norm) + + # Add legend with class names + legend_elements = [Rectangle((0, 0), 1, 1, facecolor=color) for color in colors] + wrapped_names = [textwrap.fill(name, width=25) for name in class_names] + axes[mask_idx].legend( + legend_elements, + wrapped_names, + loc='center left', + bbox_to_anchor=(1, 0.5), + fontsize='x-small', + ) + axes[mask_idx].axis('off') + + if show_titles: + axes[mask_idx].set_title('Land Cover Map') + + if 'label' in sample: + label_indices = sample['label'].nonzero().squeeze(1).tolist() + label_names = [self.class_set[idx] for idx in label_indices] + if suptitle: + suptitle = f'{suptitle}\nLabels: {", ".join(label_names)}' + else: + suptitle = f'Labels: {", ".join(label_names)}' + + if suptitle: + plt.suptitle(suptitle) + + # Adjust layout to prevent overlap + plt.tight_layout() + + return fig