scenes issueshttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues2022-03-26T22:10:06+01:00https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/1Ajouter un setup.py pour que la librairie soit pip installable2022-03-26T22:10:06+01:00Cresson RemiAjouter un setup.py pour que la librairie soit pip installablehttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/2Documentation2022-03-28T13:06:42+02:00Cresson RemiDocumentationFaire une doc de l'APIFaire une doc de l'APIhttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/3DOC: params and return are not separated from docstring2022-04-01T20:11:46+02:00Narcon NicolasDOC: params and return are not separated from docstringExample:
![image](/uploads/0743d313541784ae318d658fd2cc9305/image.png)Example:
![image](/uploads/0743d313541784ae318d658fd2cc9305/image.png)https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/4Add a class for bounding box2022-04-01T21:04:33+02:00Cresson RemiAdd a class for bounding boxhttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/5Add bounding box serialization2022-04-04T15:10:57+02:00Narcon NicolasAdd bounding box serializationstr(bounding_box) returns `<scenes.bbox.BoundingBox object at 0x7f4ee79eaac0>`. It would be nice to have something more usefulstr(bounding_box) returns `<scenes.bbox.BoundingBox object at 0x7f4ee79eaac0>`. It would be nice to have something more usefulhttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/6Add deepnets2022-04-13T18:10:52+02:00Cresson RemiAdd deepnetsCresson RemiCresson Remihttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/7Use tqdm autonotebook2022-04-12T21:41:27+02:00Cresson RemiUse tqdm autonotebookCresson RemiCresson Remihttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/8Additional info for download stuff2023-06-06T18:21:33+02:00Cresson RemiAdditional info for download stuffTODO:
- Add tests
- Add theia.cfg in otbuser homeTODO:
- Add tests
- Add theia.cfg in otbuser homehttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/9Update drs_search2022-04-13T21:54:15+02:00Cresson RemiUpdate drs_searchCresson RemiCresson Remihttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/10Use right exceptions2022-04-19T13:53:35+02:00Cresson RemiUse right exceptions- e.g. ogr.Open() --> fileNotFound- e.g. ogr.Open() --> fileNotFoundhttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/11Lazy dates everywhere2022-04-14T13:11:17+02:00Cresson RemiLazy dates everywherehttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/12Packaging2022-04-18T14:58:01+02:00Cresson RemiPackagingDo something to package properly scenes.
From the last OTBTF docker image, here is what it needs (source: `.gitlab-ci.yml`):
```
- sudo apt update && sudo apt install python3-pycurl
- sudo python3 -m pip install pytest pytest-co...Do something to package properly scenes.
From the last OTBTF docker image, here is what it needs (source: `.gitlab-ci.yml`):
```
- sudo apt update && sudo apt install python3-pycurl
- sudo python3 -m pip install pytest pytest-cov pyotb rtree tqdm
```
Related !28https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/13Get BoundingBox from pyotb.otbObject2022-04-18T14:59:07+02:00Cresson RemiGet BoundingBox from pyotb.otbObjecte.g.
```
sc = scenes.spot.Spot67Scene(...)
xs = sc.get_imagery().get_xs()
roi = xs [2000:3000, 5000:6000, :]
bbox = raster.get_bbox_wgs84(roi)
```e.g.
```
sc = scenes.spot.Spot67Scene(...)
xs = sc.get_imagery().get_xs()
roi = xs [2000:3000, 5000:6000, :]
bbox = raster.get_bbox_wgs84(roi)
```https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/14Ajouter des exemples de codes2022-04-19T13:53:36+02:00Cresson RemiAjouter des exemples de codeshttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/15CI cache test data2022-04-18T15:49:11+02:00Vincent DelbarCI cache test dataActually, it seems that test data is downloaded 4 times (for each extended job).
TODO: use cache to avoid this.
Data could be downloaded first, a the same time we install test deps (during the first job 'env' which could just be 'env')Actually, it seems that test data is downloaded 4 times (for each extended job).
TODO: use cache to avoid this.
Data could be downloaded first, a the same time we install test deps (during the first job 'env' which could just be 'env')https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/16deploy:pages seulement lors d'un merge sur develop2022-05-14T16:43:13+02:00Cresson Remideploy:pages seulement lors d'un merge sur develophttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/17ajouter un test de TheiaDownloader2023-03-22T20:46:09+01:00Cresson Remiajouter un test de TheiaDownloaderhttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/18Suppression de imagery?2022-05-17T15:21:52+02:00Cresson RemiSuppression de imagery?Je me demande si ça ne simplifierait pas les choses de supprimer la classe `Imagery` et de lier les différentes `Sources` directement aux capteurs.
Des opinions?Je me demande si ça ne simplifierait pas les choses de supprimer la classe `Imagery` et de lier les différentes `Sources` directement aux capteurs.
Des opinions?https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/19Générer des objets `Scene` à partir de catalogues STAC2023-04-23T20:20:02+02:00Cresson RemiGénérer des objets `Scene` à partir de catalogues STACEst-ce qu'on pourrait instancier des listes d'objects `Scene` à partir de catalogues, ou bien instancier des `Scene` à partir d'entrées d'un catalogue STAC.
Voir ce qu'on pourrait faire avec [PySTAC](https://github.com/stac-utils/pystac)Est-ce qu'on pourrait instancier des listes d'objects `Scene` à partir de catalogues, ou bien instancier des `Scene` à partir d'entrées d'un catalogue STAC.
Voir ce qu'on pourrait faire avec [PySTAC](https://github.com/stac-utils/pystac)https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/20No /MASKS dir for SPOT images2023-03-23T17:12:03+01:00Giffard-Carlet JosselinNo /MASKS dir for SPOT imagesWhen I use **Spot67Scene** function on SPOT67 images download from [equipex-geosud](https://ids.equipex-geosud.fr/) :
```
from scenes.spot import Spot67Scene
/STRIP_DS_SPOT6_202007271013055_GS1_FR1_FR1_FR1_E006N46_03332_DIM.XML
sc = Spo...When I use **Spot67Scene** function on SPOT67 images download from [equipex-geosud](https://ids.equipex-geosud.fr/) :
```
from scenes.spot import Spot67Scene
/STRIP_DS_SPOT6_202007271013055_GS1_FR1_FR1_FR1_E006N46_03332_DIM.XML
sc = Spot67Scene(dimap_file_xs=pan_xml,
dimap_file_pan=ms_xml)
```
Result in :
```
ERROR 3: Cannot open file '/03_SPOT6-7/02_Extracts/SPOT6_2020_France-Ortho_NC_IGN-PAN_S6P_2020072736786037CP/S6P_2020072736786037CP/PROD_SPOT6_001/VOL_SPOT6_001_A/IMG_SPOT6_PAN_001_A/LINEAGE/STRIP_DS_SPOT6_202007271013055_GS1_FR1_FR1_FR1_E006N46_03332_DIM.XML'
ERROR 3: Cannot open file '/03_SPOT6-7/02_Extracts/SPOT6_2020_France-Ortho_NC_IGN-PAN_S6P_2020072736786037CP/S6P_2020072736786037CP/PROD_SPOT6_001/VOL_SPOT6_001_A/IMG_SPOT6_PAN_001_A/RPC_SPOT6_P_202007271013055_SEN_SPOT6_20200918_1218121gzpapjyzvcs0_1.XML'
ERROR 3: Cannot open file '/03_SPOT6-7/02_Extracts/SPOT6_2020_France-Ortho_NC_IGN-MS_S6X_2020072736786037CP/S6X_2020072736786037CP/PROD_SPOT6_001/VOL_SPOT6_001_A/IMG_SPOT6_MS_001_A/LINEAGE/STRIP_DS_SPOT6_202007271013055_GS1_FR1_FR1_FR1_E006N46_03332_DIM.XML'
ERROR 3: Cannot open file '/03_SPOT6-7/02_Extracts/SPOT6_2020_France-Ortho_NC_IGN-MS_S6X_2020072736786037CP/S6X_2020072736786037CP/PROD_SPOT6_001/VOL_SPOT6_001_A/IMG_SPOT6_MS_001_A/RPC_SPOT6_MS_202007271013055_SEN_SPOT6_20200918_1218121gzpapjyzvcs0_1.XML'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/otbuser/.local/lib/python3.8/site-packages/scenes/spot.py", line 340, in __init__
self.cld_msk_file_xs = _get_mask(dimap_file_xs, "CLD*.GML")
File "/home/otbuser/.local/lib/python3.8/site-packages/scenes/spot.py", line 285, in _get_mask
raise FileNotFoundError(
FileNotFoundError: ERROR: unable to find a unique file in /03_SPOT6-7/02_Extracts/SPOT6_2020_France-Ortho_NC_IGN-PAN_S6P_2020072736786037CP/S6P_2020072736786037CP/PROD_SPOT6_001/VOL_SPOT6_001_A/IMG_SPOT6_PAN_001_A/MASKS with pattern CLD*.GML
```
For me no /MASKS directory in my SPOT directories.
Here is tree of SPOT directories :
```
SPOT6_2020_France-Ortho_NC_IGN-MS_S6X_2020072736786037CP
├── metadata-iso.xml
└── S6X_2020072736786037CP
└── PROD_SPOT6_001
└── VOL_SPOT6_001_A
└── IMG_SPOT6_MS_001_A
├── DIM_S6X_2020072736786037CP.XML
└── IMG_S6X_2020072736786037CP_R1C1.TIF
SPOT6_2020_France-Ortho_NC_IGN-PAN_S6P_2020072736786037CP
├── metadata-iso.xml
└── S6P_2020072736786037CP
└── PROD_SPOT6_001
└── VOL_SPOT6_001_A
└── IMG_SPOT6_PAN_001_A
├── DIM_S6P_2020072736786037CP.XML
└── IMG_S6P_2020072736786037CP_R1C1.TIF
```https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/22Pyotb 1.4.1 has introduced a bug2022-07-13T10:28:00+02:00Narcon NicolasPyotb 1.4.1 has introduced a bug```python
from scenes import spot
sc = spot.Spot67Scene(dimap_file_xs='DIM_SPOT6_MS_201503261014386_ORT_SPOT6_20170524_1422391k0ha487979cy_1.XML', dimap_file_pan='DIM_SPOT6_P_201503261014386_ORT_SPOT6_20170524_1422391k0ha487979cy_1.XML'...```python
from scenes import spot
sc = spot.Spot67Scene(dimap_file_xs='DIM_SPOT6_MS_201503261014386_ORT_SPOT6_20170524_1422391k0ha487979cy_1.XML', dimap_file_pan='DIM_SPOT6_P_201503261014386_ORT_SPOT6_20170524_1422391k0ha487979cy_1.XML')
xs = sc.get_xs()
print(hasattr(xs, 'shape')) # prints False
xs.shape # Raises exception
```
Exception raised:
```
Traceback (most recent call last):
File "/home/otbuser/.local/lib/python3.8/site-packages/pyotb/core.py", line 245, in __getattr__
res = getattr(self.app, name)
File "/opt/otbtf/lib/otb/python/otbApplication.py", line 2833, in __getattr__
raise AttributeError("'%s' object has no attribute '%s'" % (Application.__name__, name))
AttributeError: 'Application' object has no attribute 'shape'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "tmp_bug_pyotb_dans_scenes.py", line 20, in <module>
print(xs.shape) ## Ceci fait planter le code
File "/home/otbuser/.local/lib/python3.8/site-packages/pyotb/core.py", line 248, in __getattr__
raise AttributeError(f'{self.name}: Could not find attribute `{name}`') from e
AttributeError: Output out from ExtractROI: Could not find attribute `shape`
```https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/23Typo in reproject function2022-07-21T14:54:43+02:00Narcon NicolasTypo in reproject functionThe use of `reproject` function from `Source` class raises:
```
AttributeError: module 'pyotb' has no attribute 'Orthorectification'
```
It is a typo: it should be OrthoRectification instead of Orthorectification
Second error: it shou...The use of `reproject` function from `Source` class raises:
```
AttributeError: module 'pyotb' has no attribute 'Orthorectification'
```
It is a typo: it should be OrthoRectification instead of Orthorectification
Second error: it should be 'map.epsg.code' instead of 'map.epsg'
Third issue:
When initializing Source, we should be able to specify the output parameter key (https://gitlab.irstea.fr/umr-tetis/scenes/-/blob/develop/scenes/core.py#L66)
```diff
- def __init__(self, root_scene: Scene, out: str | pyotb.core.otbObject, parent: Source = None):
- ...
- super().__init__(app=pyotb.Input(out).pyotb_app if isinstance(out, str) else out, output_parameter_key="out")
+ def __init__(self, root_scene: Scene, out: str | pyotb.core.otbObject, parent: Source = None, output_parameter_key='out'):
+ ...
+ super().__init__(app=pyotb.Input(out).pyotb_app if isinstance(out, str) else out, output_parameter_key=output_parameter_key)
```https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/24Support de STAC2023-03-23T17:12:02+01:00Cresson RemiSupport de STAC# Base
- Publication scene --> STAC Item (cf. https://pystac.readthedocs.io/en/stable/tutorials/how-to-create-stac-catalogs.html):
- [x] rendre bbox similaire à rasterio
- [x] ajouter footprint (doit être similaire à rasterio)
- Ins...# Base
- Publication scene --> STAC Item (cf. https://pystac.readthedocs.io/en/stable/tutorials/how-to-create-stac-catalogs.html):
- [x] rendre bbox similaire à rasterio
- [x] ajouter footprint (doit être similaire à rasterio)
- Instanciation de scenes à partir de catalogue STAC
- [x] instancier un object `Scene` à partir d'un STAC Item
# A investiguer
- [x] Genericité de l'API STAC pour faire des recherches par bbox et date
- [x] Mapping générique STAC Item --> SensorScene permettant l'ajout de multiples fournisseurs pour un capteur donné
# Refonte des constructeurs de classes `Scene`
## Avant
```mermaid
classDiagram
Scene <|-- Spot67Scene
Scene <|-- Sentinel2SceneBase
Sentinel2SceneBase <|-- Sentinel22AScene
Sentinel2SceneBase <|-- Sentinel23AScene
Scene : __init__(acquisition_date, epsg, extent_wgs84)
Scene : datetime acquisition_date
Scene : list extent_wgs84
Scene : int epsg
Scene : BoundingBox bbox_wgs84
Spot67Scene : __init__(dim_xs, dim_pan)
Spot67Scene : Spot67Source get_xs(reflectance)
Spot67Scene : Spot67Source get_pan(reflectance)
Spot67Scene : list extent_wgs84_xs
Spot67Scene : list extent_wgs84_pan
Spot67Scene : float sun_az
Spot67Scene : float sun_elev
Spot67Scene : str cld_msk_file_xs
Spot67Scene : str cld_msk_file_pan
Spot67Scene : str roi_msk_file_xs
Spot67Scene : str roi_msk_file_pan
Sentinel2SceneBase : __init__(archive, tag)
Sentinel2SceneBase : str archive
Sentinel2SceneBase : str tag
Sentinel22AScene : __init__(archive)
Sentinel22AScene : Sentinel22ASource get_10m_bands()
Sentinel22AScene : Sentinel22ASource get_20m_bands()
Sentinel22AScene: str clm_r1_msk_file
Sentinel22AScene: str edg_r1_msk_file
Sentinel22AScene: str clm_r2_msk_file
Sentinel22AScene: str edg_r2_msk_file
Sentinel23AScene : __init__(archive)
Sentinel23AScene : Sentinel23ASource get_10m_bands()
Sentinel23AScene : Sentinel23ASource get_20m_bands()
Sentinel23AScene: str flg_r1_msk_file
Sentinel23AScene: str flg_r2_msk_file
```
## Après
### Scenes
```mermaid
classDiagram
Scene <|-- Spot67Base
Spot67Base <|-- Spot67DRS
Spot67Base <|-- Spot67IGN
Scene <|-- Sentinel2Base
Sentinel2Base <|-- Sentinel2Theia2A
Sentinel2Base <|-- Sentinel2Theia3A
Sentinel2Base <|-- Sentinel2MPC2A
Scene : __init__(acquisition_date, epsg, extent_wgs84)
Scene : datetime acquisition_date
Scene : list extent_wgs84
Scene : int epsg
Scene : BoundingBox bbox_wgs84
Scene : dict[str, str] sources_paths
Spot67Base : __init__(src_xs, src_pan)
Spot67Base : list extent_wgs84_xs
Spot67Base : list extent_wgs84_pan
Sentinel2Base : __init__(assets_dict)
Sentinel2Base : class SourceClass
```
### Sources
```mermaid
classDiagram
Source <|-- Spot67DRSSource
Source <|-- Sentinel2Source
Sentinel2Source <|-- Sentinel2Theia2ASource
Sentinel2Source <|-- Sentinel2Theia3ASource
Spot67DRSSource: reflectance(kwargs)
Spot67DRSSource: cld_msk_drilled(nodata)
Sentinel2Source: msk_drilled(msk_dict, exp, nodata)
Sentinel2Theia2ASource: get_cld_drilled(nodata)
Sentinel2Theia3ASource: get_flg_drilled(keep_flags_values, nodata)
```
## Use cases
### Local ADS-DRS Spot-6/7 products (DIMAP format)
<details>
```python
sc = scenes.spot.from_dimaps(dim_xs='/path/to/DIM_SPOT6_XS_..._1.XML',
dim_pan='/path/to/DIM_SPOT6_P_..._1.XML')
print(sc.sources)
```
```bash
['xs', 'p', 'cld_msk', 'xs_cld_msk', 'pan_cld_msk']
```
</details>
### Remote ADS-DRS Spot-6/7 products from Dinamis STAC catalog
<details>
```python
scs = scenes.stac.search(url = "https://stacapi.147.100.200.143.nip.io"
collections = ["Spot-6-7-DRS-collection"],
bbox_wgs84=bbox)
print(scs[0].sources)
```
```bash
['xs', 'p', 'cld_msk', 'xs_cld_msk', 'pan_cld_msk']
```
</details>
### Remote IGN Spot-6/7 orthos from Dinamis STAC catalog
<details>
```python
scs = scenes.stac.search(url = "https://stacapi.147.100.200.143.nip.io"
collections = ["Spot-6-7-IGN-collection"],
bbox_wgs84=bbox)
print(scs[0].sources)
```
```bash
['xs', 'p']
```
</details>
### Sentinel-2 Level 2A from Microsoft Planetary Computer
<details>
```python
mpc_scs = scenes.stac.search(url="https://planetarycomputer.microsoft.com/api/stac/v1",
collections=["sentinel-2-l2a"],
bbox_wgs84=bbox)
print(mpc_scs[0].sources)
```
```bash
['10m_bands', '20m_bands', '60m_bands']
```
</details>
### Sentinel-2 Level 2A from Theia
<details>
```python
theia_scs = scenes.theia.search(level="2A",
bbox_wgs84=bbox)
print(theia_scs[0].sources)
```
```bash
['10m_bands', '20m_bands', '60m_bands', '10m_CLM', '20m_CLM', '10m_EDG', '20m_EDG']
```
</details>
### Sentinel-2 Level 3A from Theia
<details>
```python
theia_scs = scenes.theia.search(level="3A",
bbox_wgs84=bbox)
print(theia_scs[0].sources)
```
```bash
['10m_bands', '20m_bands', '60m_bands', '10m_FLG', '20m_FLG']
```
</details>
## Howto
### approche pragmatique
- [ ] add `get_10m_CLM`, `get_20m_CLM`, `get_10m_FLG`, `get_20m_FLG`, `get_10m_EDG`, `get_20m_EDG` in `Sentinel2Source`
- [ ] add `get_cld_msk` and `get_xs_cld_msk`, `get_pan_cld_msk` in `Spot67DRSSource`
- [x] add optional band indices in `get_10m_bands` and `get_20m_bands` in `Sentinel2Scene`
- [x] utiliser `sources_paths` pour garder les paths (urls, uris, filenames) des assets disponibles, summarizer cela dans les metadatas automatiquement (suppression des surcharges de `get_metadata` dans les classes héritant de `Scene`)
### idee, trop compliqué à mettre en place
- single Source class
- add `capabilities` attribute to `Source`: list of all inherited capabilities (e.g. `['drilled', 'masked', 'resample_over', 'clip_over_img', 'clip_over_vec', 'reproject']` for any basic `Source`)
- implement dynamic sources get (use a dict to store sources)https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/25Les classes sentinel ne retournent que des sources Sentinel22A2022-09-07T21:59:31+02:00Cresson RemiLes classes sentinel ne retournent que des sources Sentinel22ACresson RemiCresson Remihttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/26ajouter un test pour les classes Sentinel22023-03-23T17:12:02+01:00Cresson Remiajouter un test pour les classes Sentinel2- tester les classes héritant de `Sentinel2Source`
- vérifier que la filiation est OK- tester les classes héritant de `Sentinel2Source`
- vérifier que la filiation est OKhttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/28Le pipeline de develop --> master plante pour "Spot67_test"2023-04-23T20:20:33+02:00Cresson RemiLe pipeline de develop --> master plante pour "Spot67_test"Et je ne comprends pas pourquoi.
Par ex.
https://gitlab.irstea.fr/umr-tetis/scenes/-/pipelines/38910Et je ne comprends pas pourquoi.
Par ex.
https://gitlab.irstea.fr/umr-tetis/scenes/-/pipelines/38910https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/29Pipelines cache2022-09-21T16:47:36+02:00Cresson RemiPipelines cacheQuand on aura la super fonctionnalité de serialization des pyotb objects (cf [cette issue](https://gitlab.orfeo-toolbox.org/nicolasnn/pyotb/-/issues/43)) on pourra faire du cache.
Par ex, considérons un traitement gourmand en calcul...
...Quand on aura la super fonctionnalité de serialization des pyotb objects (cf [cette issue](https://gitlab.orfeo-toolbox.org/nicolasnn/pyotb/-/issues/43)) on pourra faire du cache.
Par ex, considérons un traitement gourmand en calcul...
```python
pxs = sc.get_pxs(method='bayes').cld_msk_drilled()
```
... qu'on est amené à refaire souvent dans un pipeline:
```python
my_pipeline = f(pxs)
```
Alors on pourrait le mettre en cache en remplaçant le code ci-dessus de cette manière:
```python
pxs_cached = scenes.Cache(pxs)
my_pipeline = f(pxs_cached)
```https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/30Possibilité de sélectionner les bandes à stacker dans Sentinel2Source2023-03-23T17:12:02+01:00Cresson RemiPossibilité de sélectionner les bandes à stacker dans Sentinel2Sourcehttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/33AssertionError when creating instance of Spot67Scene2023-03-23T17:12:02+01:00Giffard-Carlet JosselinAssertionError when creating instance of Spot67SceneWith SPOT image from https://ids-dinamis.data-terra.org/web/guest/catalog1
image selected with coordinates N : 45.4924, E : 6.6502, S : 45.3072, W : 6.3426, year : 2020, "Image brute" :
- 2020-07-08_10:09:55.539_SPOT6_SENSOR_MS
- 2020-0...With SPOT image from https://ids-dinamis.data-terra.org/web/guest/catalog1
image selected with coordinates N : 45.4924, E : 6.6502, S : 45.3072, W : 6.3426, year : 2020, "Image brute" :
- 2020-07-08_10:09:55.539_SPOT6_SENSOR_MS
- 2020-07-08_10:09:55.538_SPOT6_SENSOR_P
When creating instance of Spot67Scene
```
from scenes.spot import Spot67Scene
sc = Spot67Scene(dimap_file_xs="/path/to/DIM_SPOT6_MS_..._1.XML",
dimap_file_pan="/path/to/DIM_SPOT6_P_..._1.XML")
```
Getting assertion error :
```
Traceback (most recent call last):
File "/usr/lib/python3.8/code.py", line 90, in runcode
exec(code, self.locals)
File "<input>", line 1, in <module>
File "/home/josselingiffard/.local/lib/python3.8/site-packages/scenes/spot.py", line 323, in __init__
epsg_xs, extent_wgs84_xs, self.bbox_wgs84_xs = get_epsg_extent_bbox(dimap_file_xs)
File "/home/josselingiffard/.local/lib/python3.8/site-packages/scenes/raster.py", line 108, in get_epsg_extent_bbox
epsg = get_epsg(gdal_ds)
File "/home/josselingiffard/.local/lib/python3.8/site-packages/scenes/raster.py", line 24, in get_epsg
assert str(epsg).isdigit()
AssertionError
```https://gitlab.irstea.fr/umr-tetis/scenes/-/issues/37Partial Sentinel-2 downloads2023-04-22T20:33:03+02:00Cresson RemiPartial Sentinel-2 downloadspermettre d'instancier des scenes sentinel-2 à partir de téléchargements incomplets, typiquement un subset des fichiers comme le fait theia-pickerpermettre d'instancier des scenes sentinel-2 à partir de téléchargements incomplets, typiquement un subset des fichiers comme le fait theia-pickerhttps://gitlab.irstea.fr/umr-tetis/scenes/-/issues/38Cache improvements2023-05-24T15:40:13+02:00Cresson RemiCache improvementscreer dossier cache si il n'existe pascreer dossier cache si il n'existe pas