umr-lops / xsar

Synthetic Aperture Radar (SAR) Level-1 GRD python mapper for efficient xarray/dask based processing
https://cyclobs.ifremer.fr/static/sarwing_datarmor/xsar/
MIT License
24 stars 8 forks source link

`AttributeError: 'Dataset' object has no attribute 'longitude'` with `set_raster` #77

Closed oarcher closed 2 years ago

oarcher commented 2 years ago
filename = 'S1A_IW_GRDH_1SDV_20210909T130650_20210909T130715_039605_04AE83_C34F.SAFE'
xsar.Sentinel1Meta.set_raster('ecmwf_0100_1h','ECMWF_FORECAST_0100_202109091300_10U_10V.nc')
sar_ds = xsar.open_dataset(filename)
Traceback (most recent call last):
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/pydevd.py", line 1483, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/snap/pycharm-professional/278/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/home/oarcher/Develop/xsartesting/test.py", line 19, in <module>
    sar_ds = xsar.open_dataset(filename)
  File "/home/oarcher/Develop/xsar/src/xsar/utils.py", line 65, in wrapper
    result = f(*args, **kwargs)
  File "/home/oarcher/Develop/xsar/src/xsar/xsar.py", line 87, in open_dataset
    sar_obj = Sentinel1Dataset(*args, **kwargs)
  File "/home/oarcher/Develop/xsar/src/xsar/sentinel1_dataset.py", line 271, in __init__
    rasters = self._load_rasters_vars()
  File "/home/oarcher/Develop/xsar/src/xsar/utils.py", line 65, in wrapper
    result = f(*args, **kwargs)
  File "/home/oarcher/Develop/xsar/src/xsar/sentinel1_dataset.py", line 995, in _load_rasters_vars
    _map_raster2xsar(raster_ds[var]),
  File "/home/oarcher/Develop/xsar/src/xsar/sentinel1_dataset.py", line 981, in _map_raster2xsar
    x=self._dataset.longitude,
  File "/home/oarcher/anaconda3/envs/xsar/lib/python3.9/site-packages/xarray/core/common.py", line 239, in __getattr__
    raise AttributeError(
AttributeError: 'Dataset' object has no attribute 'longitude'

it seems that in Sentinel1Dataset, self._load_rasters_vars() is called before longitude is available.