From eb3fb0eb6ede078ac80417bd7cce4f10b72609d4 Mon Sep 17 00:00:00 2001 From: konstntokas Date: Fri, 14 Nov 2025 16:24:59 +0100 Subject: [PATCH 1/2] grid mapping update --- CHANGES.md | 7 +- .../introduction_xarray_eopf_plugin.ipynb | 4 +- examples/open-sen2.ipynb | 47722 +++++++++++++--- examples/open-sen3.ipynb | 4 +- integration/test_sen1_native.py | 4 +- integration/test_sen2_analysis.py | 25 +- integration/test_sen3_analysis.py | 20 +- integration/test_sen3_native.py | 16 +- tests/amodes/test_sentinel2.py | 30 +- tests/amodes/test_sentinel3.py | 2 +- tests/helpers/__init__.py | 2 +- tests/helpers/sentinel2.py | 24 +- tests/helpers/sentinel3.py | 2 +- tests/test_amode.py | 3 + tests/test_utils.py | 1 - xarray_eopf/amode.py | 11 + xarray_eopf/amodes/sentinel2.py | 68 +- xarray_eopf/amodes/sentinel3.py | 15 +- xarray_eopf/utils.py | 3 +- 19 files changed, 40899 insertions(+), 7064 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 87bd4e3..2b892fa 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,14 +3,17 @@ * Added support for **common band names** from the [STAC EO extension](https://github.com/stac-extensions/eo?tab=readme-ov-file#common-band-names) in **Sentinel-2 analysis mode**. The `variables` parameter now accepts standard spectral names such as `blue`, `green`, `red`, `nir`, and others. +* Bug fix: CRS information is missing in Sentinel-2 product data variables since + CPM v2.6.2. CRS is now correctly read from the dataset’s `other_metadata` + attributes in the datatree. ## Changes in 0.2.3 (from 2025-10-23) -- **Sentinel-3 SLSTR Level-1 RBT products** are now supported in analysis mode. This +* **Sentinel-3 SLSTR Level-1 RBT products** are now supported in analysis mode. This allows data from grids a, b, f, and i β€” in both nadir and oblique viewing geometries β€” to be represented on a unified grid within a single dataset. -- **Sentinel-3 SLSTR datasets** are now terrain-corrected using the elevation +* **Sentinel-3 SLSTR datasets** are now terrain-corrected using the elevation information provided within the product itself. diff --git a/examples/introduction_xarray_eopf_plugin.ipynb b/examples/introduction_xarray_eopf_plugin.ipynb index d6f10e3..38b190b 100644 --- a/examples/introduction_xarray_eopf_plugin.ipynb +++ b/examples/introduction_xarray_eopf_plugin.ipynb @@ -76540,7 +76540,7 @@ "source": [ "ds = xr.open_datatree(\n", " item.assets[\"product\"].href,\n", - " **item.assets[\"product\"].extra_fields[\"xarray:open_datatree_kwargs\"]\n", + " **item.assets[\"product\"].extra_fields[\"xarray:open_datatree_kwargs\"],\n", ")\n", "ds" ] @@ -82893,7 +82893,7 @@ "source": [ "ds = xr.open_dataset(\n", " item.assets[\"product\"].href,\n", - " **item.assets[\"product\"].extra_fields[\"xarray:open_datatree_kwargs\"]\n", + " **item.assets[\"product\"].extra_fields[\"xarray:open_datatree_kwargs\"],\n", ")\n", "ds" ] diff --git a/examples/open-sen2.ipynb b/examples/open-sen2.ipynb index 6ec5f54..a585243 100644 --- a/examples/open-sen2.ipynb +++ b/examples/open-sen2.ipynb @@ -50,8 +50,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 888 ms, sys: 111 ms, total: 999 ms\n", - "Wall time: 4.88 s\n" + "CPU times: user 930 ms, sys: 132 ms, total: 1.06 s\n", + "Wall time: 2.66 s\n" ] }, { @@ -72,7 +72,9 @@ "\n", "\n", "\n", - "
<xarray.DataTree>\n",
-       "Group: /\n",
-       "β”‚   Attributes: (3)\n",
-       "β”œβ”€β”€ Group: /conditions\n",
-       "β”‚   β”œβ”€β”€ Group: /conditions/geometry\n",
-       "β”‚   β”‚       Dimensions:                        (angle: 2, band: 13, y: 23, x: 23,\n",
-       "β”‚   β”‚                                           detector: 4)\n",
-       "β”‚   β”‚       Coordinates:\n",
-       "β”‚   β”‚         * angle                          (angle) <U7 56B 'zenith' 'azimuth'\n",
-       "β”‚   β”‚         * band                           (band) <U3 156B 'b01' 'b02' ... 'b11' 'b12'\n",
-       "β”‚   β”‚         * y                              (y) int64 184B 5000040 4995040 ... 4890040\n",
-       "β”‚   β”‚         * x                              (x) int64 184B 300000 305000 ... 410000\n",
-       "β”‚   β”‚         * detector                       (detector) int64 32B 1 2 3 4\n",
-       "β”‚   β”‚       Data variables:\n",
-       "β”‚   β”‚           mean_sun_angles                (angle) float64 16B dask.array<chunksize=(2,), meta=np.ndarray>\n",
-       "β”‚   β”‚           mean_viewing_incidence_angles  (band, angle) float64 208B dask.array<chunksize=(13, 2), meta=np.ndarray>\n",
-       "β”‚   β”‚           sun_angles                     (angle, y, x) float64 8kB dask.array<chunksize=(2, 23, 23), meta=np.ndarray>\n",
-       "β”‚   β”‚           viewing_incidence_angles       (band, detector, angle, y, x) float64 440kB dask.array<chunksize=(7, 4, 2, 23, 23), meta=np.ndarray>\n",
-       "β”‚   β”œβ”€β”€ Group: /conditions/mask\n",
-       "β”‚   β”‚   β”œβ”€β”€ Group: /conditions/mask/detector_footprint\n",
-       "β”‚   β”‚   β”‚   β”œβ”€β”€ Group: /conditions/mask/detector_footprint/r10m\n",
-       "β”‚   β”‚   β”‚   β”‚       Dimensions:  (y: 10980, x: 10980)\n",
-       "β”‚   β”‚   β”‚   β”‚       Coordinates:\n",
-       "β”‚   β”‚   β”‚   β”‚         * y        (y) int64 88kB 5000035 5000025 5000015 ... 4890265 4890255 4890245\n",
-       "β”‚   β”‚   β”‚   β”‚         * x        (x) int64 88kB 300005 300015 300025 300035 ... 409775 409785 409795\n",
-       "β”‚   β”‚   β”‚   β”‚       Data variables:\n",
-       "β”‚   β”‚   β”‚   β”‚           b02      (y, x) uint8 121MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”‚           b03      (y, x) uint8 121MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”‚           b04      (y, x) uint8 121MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”‚           b08      (y, x) uint8 121MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”œβ”€β”€ Group: /conditions/mask/detector_footprint/r20m\n",
-       "β”‚   β”‚   β”‚   β”‚       Dimensions:  (y: 5490, x: 5490)\n",
-       "β”‚   β”‚   β”‚   β”‚       Coordinates:\n",
-       "β”‚   β”‚   β”‚   β”‚         * y        (y) int64 44kB 5000030 5000010 4999990 ... 4890290 4890270 4890250\n",
-       "β”‚   β”‚   β”‚   β”‚         * x        (x) int64 44kB 300010 300030 300050 300070 ... 409750 409770 409790\n",
-       "β”‚   β”‚   β”‚   β”‚       Data variables:\n",
-       "β”‚   β”‚   β”‚   β”‚           b05      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”‚           b06      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”‚           b07      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”‚           b11      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”‚           b12      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   β”‚           b8a      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚   └── Group: /conditions/mask/detector_footprint/r60m\n",
-       "β”‚   β”‚   β”‚           Dimensions:  (y: 1830, x: 1830)\n",
-       "β”‚   β”‚   β”‚           Coordinates:\n",
-       "β”‚   β”‚   β”‚             * y        (y) int64 15kB 5000010 4999950 4999890 ... 4890390 4890330 4890270\n",
-       "β”‚   β”‚   β”‚             * x        (x) int64 15kB 300030 300090 300150 300210 ... 409650 409710 409770\n",
-       "β”‚   β”‚   β”‚           Data variables:\n",
-       "β”‚   β”‚   β”‚               b01      (y, x) uint8 3MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚               b09      (y, x) uint8 3MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "β”‚   β”‚   β”‚               b10      (y, x) uint8 3MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "β”‚   β”‚   └── Group: /conditions/mask/l1c_classification\n",
-       "β”‚   β”‚       └── Group: /conditions/mask/l1c_classification/r60m\n",
-       "β”‚   β”‚               Dimensions:  (y: 1830, x: 1830)\n",
-       "β”‚   β”‚               Coordinates:\n",
-       "β”‚   β”‚                 * y        (y) int64 15kB 5000010 4999950 4999890 ... 4890390 4890330 4890270\n",
-       "β”‚   β”‚                 * x        (x) int64 15kB 300030 300090 300150 300210 ... 409650 409710 409770\n",
-       "β”‚   β”‚               Data variables:\n",
-       "β”‚   β”‚                   b00      (y, x) uint8 3MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "β”‚   └── Group: /conditions/meteorology\n",
-       "β”‚       β”œβ”€β”€ Group: /conditions/meteorology/cams\n",
-       "β”‚       β”‚       Dimensions:        (latitude: 9, longitude: 9)\n",
-       "β”‚       β”‚       Coordinates:\n",
-       "β”‚       β”‚         * latitude       (latitude) float64 72B 45.13 45.0 44.88 ... 44.4 44.28 44.16\n",
-       "β”‚       β”‚         * longitude      (longitude) float64 72B 6.457 6.634 6.811 ... 7.695 7.872\n",
-       "β”‚       β”‚           isobaricInhPa  float64 8B ...\n",
-       "β”‚       β”‚           number         int64 8B ...\n",
-       "β”‚       β”‚           step           int64 8B ...\n",
-       "β”‚       β”‚           surface        float64 8B ...\n",
-       "β”‚       β”‚           time           datetime64[ns] 8B ...\n",
-       "β”‚       β”‚           valid_time     datetime64[ns] 8B ...\n",
-       "β”‚       β”‚       Data variables:\n",
-       "β”‚       β”‚           aod1240        (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           aod469         (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           aod550         (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           aod670         (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           aod865         (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           bcaod550       (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           duaod550       (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           omaod550       (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           ssaod550       (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           suaod550       (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚           z              (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚       β”‚       Attributes: (7)\n",
-       "β”‚       └── Group: /conditions/meteorology/ecmwf\n",
-       "β”‚               Dimensions:        (latitude: 9, longitude: 9)\n",
-       "β”‚               Coordinates:\n",
-       "β”‚                 * latitude       (latitude) float64 72B 45.13 45.0 44.88 ... 44.4 44.28 44.16\n",
-       "β”‚                 * longitude      (longitude) float64 72B 6.457 6.634 6.811 ... 7.695 7.872\n",
-       "β”‚                   isobaricInhPa  float64 8B ...\n",
-       "β”‚                   number         int64 8B ...\n",
-       "β”‚                   step           int64 8B ...\n",
-       "β”‚                   surface        float64 8B ...\n",
-       "β”‚                   time           datetime64[ns] 8B ...\n",
-       "β”‚                   valid_time     datetime64[ns] 8B ...\n",
-       "β”‚               Data variables:\n",
-       "β”‚                   msl            (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚                   r              (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚                   tco3           (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚                   tcwv           (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚                   u10            (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚                   v10            (latitude, longitude) float32 324B dask.array<chunksize=(9, 9), meta=np.ndarray>\n",
-       "β”‚               Attributes: (7)\n",
-       "β”œβ”€β”€ Group: /measurements\n",
-       "β”‚   └── Group: /measurements/reflectance\n",
-       "β”‚       β”œβ”€β”€ Group: /measurements/reflectance/r10m\n",
-       "β”‚       β”‚       Dimensions:  (y: 10980, x: 10980)\n",
-       "β”‚       β”‚       Coordinates:\n",
-       "β”‚       β”‚         * y        (y) int64 88kB 5000035 5000025 5000015 ... 4890265 4890255 4890245\n",
-       "β”‚       β”‚         * x        (x) int64 88kB 300005 300015 300025 300035 ... 409775 409785 409795\n",
-       "β”‚       β”‚       Data variables:\n",
-       "β”‚       β”‚           b02      (y, x) float64 964MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "β”‚       β”‚           b03      (y, x) float64 964MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "β”‚       β”‚           b04      (y, x) float64 964MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "β”‚       β”‚           b08      (y, x) float64 964MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "β”‚       β”œβ”€β”€ Group: /measurements/reflectance/r20m\n",
-       "β”‚       β”‚       Dimensions:  (y: 5490, x: 5490)\n",
-       "β”‚       β”‚       Coordinates:\n",
-       "β”‚       β”‚         * y        (y) int64 44kB 5000030 5000010 4999990 ... 4890290 4890270 4890250\n",
-       "β”‚       β”‚         * x        (x) int64 44kB 300010 300030 300050 300070 ... 409750 409770 409790\n",
-       "β”‚       β”‚       Data variables:\n",
-       "β”‚       β”‚           b05      (y, x) float64 241MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚       β”‚           b06      (y, x) float64 241MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚       β”‚           b07      (y, x) float64 241MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚       β”‚           b11      (y, x) float64 241MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚       β”‚           b12      (y, x) float64 241MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚       β”‚           b8a      (y, x) float64 241MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "β”‚       └── Group: /measurements/reflectance/r60m\n",
-       "β”‚               Dimensions:  (y: 1830, x: 1830)\n",
-       "β”‚               Coordinates:\n",
-       "β”‚                 * y        (y) int64 15kB 5000010 4999950 4999890 ... 4890390 4890330 4890270\n",
-       "β”‚                 * x        (x) int64 15kB 300030 300090 300150 300210 ... 409650 409710 409770\n",
-       "β”‚               Data variables:\n",
-       "β”‚                   b01      (y, x) float64 27MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "β”‚                   b09      (y, x) float64 27MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "β”‚                   b10      (y, x) float64 27MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "└── Group: /quality\n",
-       "    β”œβ”€β”€ Group: /quality/l1c_quicklook\n",
-       "    β”‚   └── Group: /quality/l1c_quicklook/r10m\n",
-       "    β”‚           Dimensions:  (band: 3, y: 10980, x: 10980)\n",
-       "    β”‚           Coordinates:\n",
-       "    β”‚             * band     (band) int64 24B 1 2 3\n",
-       "    β”‚             * y        (y) int64 88kB 5000035 5000025 5000015 ... 4890265 4890255 4890245\n",
-       "    β”‚             * x        (x) int64 88kB 300005 300015 300025 300035 ... 409775 409785 409795\n",
-       "    β”‚           Data variables:\n",
-       "    β”‚               tci      (band, y, x) uint8 362MB dask.array<chunksize=(1, 1830, 1830), meta=np.ndarray>\n",
-       "    └── Group: /quality/mask\n",
-       "        β”œβ”€β”€ Group: /quality/mask/r10m\n",
-       "        β”‚       Dimensions:  (y: 10980, x: 10980)\n",
-       "        β”‚       Coordinates:\n",
-       "        β”‚         * y        (y) int64 88kB 5000035 5000025 5000015 ... 4890265 4890255 4890245\n",
-       "        β”‚         * x        (x) int64 88kB 300005 300015 300025 300035 ... 409775 409785 409795\n",
-       "        β”‚       Data variables:\n",
-       "        β”‚           b02      (y, x) uint8 121MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "        β”‚           b03      (y, x) uint8 121MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "        β”‚           b04      (y, x) uint8 121MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "        β”‚           b08      (y, x) uint8 121MB dask.array<chunksize=(1830, 1830), meta=np.ndarray>\n",
-       "        β”œβ”€β”€ Group: /quality/mask/r20m\n",
-       "        β”‚       Dimensions:  (y: 5490, x: 5490)\n",
-       "        β”‚       Coordinates:\n",
-       "        β”‚         * y        (y) int64 44kB 5000030 5000010 4999990 ... 4890290 4890270 4890250\n",
-       "        β”‚         * x        (x) int64 44kB 300010 300030 300050 300070 ... 409750 409770 409790\n",
-       "        β”‚       Data variables:\n",
-       "        β”‚           b05      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "        β”‚           b06      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "        β”‚           b07      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "        β”‚           b11      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "        β”‚           b12      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "        β”‚           b8a      (y, x) uint8 30MB dask.array<chunksize=(915, 915), meta=np.ndarray>\n",
-       "        └── Group: /quality/mask/r60m\n",
-       "                Dimensions:  (y: 1830, x: 1830)\n",
-       "                Coordinates:\n",
-       "                  * y        (y) int64 15kB 5000010 4999950 4999890 ... 4890390 4890330 4890270\n",
-       "                  * x        (x) int64 15kB 300030 300090 300150 300210 ... 409650 409710 409770\n",
-       "                Data variables:\n",
-       "                    b01      (y, x) uint8 3MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "                    b09      (y, x) uint8 3MB dask.array<chunksize=(305, 305), meta=np.ndarray>\n",
-       "                    b10      (y, x) uint8 3MB dask.array<chunksize=(305, 305), meta=np.ndarray>
" - ], - "text/plain": [ - "\n", - "Group: /\n", - "β”‚ Attributes: (3)\n", - "β”œβ”€β”€ Group: /conditions\n", - "β”‚ β”œβ”€β”€ Group: /conditions/geometry\n", - "β”‚ β”‚ Dimensions: (angle: 2, band: 13, y: 23, x: 23,\n", - "β”‚ β”‚ detector: 4)\n", - "β”‚ β”‚ Coordinates:\n", - "β”‚ β”‚ * angle (angle) \n", - "β”‚ β”‚ mean_viewing_incidence_angles (band, angle) float64 208B dask.array\n", - "β”‚ β”‚ sun_angles (angle, y, x) float64 8kB dask.array\n", - "β”‚ β”‚ viewing_incidence_angles (band, detector, angle, y, x) float64 440kB dask.array\n", - "β”‚ β”œβ”€β”€ Group: /conditions/mask\n", - "β”‚ β”‚ β”œβ”€β”€ Group: /conditions/mask/detector_footprint\n", - "β”‚ β”‚ β”‚ β”œβ”€β”€ Group: /conditions/mask/detector_footprint/r10m\n", - "β”‚ β”‚ β”‚ β”‚ Dimensions: (y: 10980, x: 10980)\n", - "β”‚ β”‚ β”‚ β”‚ Coordinates:\n", - "β”‚ β”‚ β”‚ β”‚ * y (y) int64 88kB 5000035 5000025 5000015 ... 4890265 4890255 4890245\n", - "β”‚ β”‚ β”‚ β”‚ * x (x) int64 88kB 300005 300015 300025 300035 ... 409775 409785 409795\n", - "β”‚ β”‚ β”‚ β”‚ Data variables:\n", - "β”‚ β”‚ β”‚ β”‚ b02 (y, x) uint8 121MB dask.array\n", - "β”‚ β”‚ β”‚ β”‚ b03 (y, x) uint8 121MB dask.array\n", - "β”‚ β”‚ β”‚ β”‚ b04 (y, x) uint8 121MB dask.array\n", - "β”‚ β”‚ β”‚ β”‚ b08 (y, x) uint8 121MB dask.array\n", - "β”‚ β”‚ β”‚ β”œβ”€β”€ Group: /conditions/mask/detector_footprint/r20m\n", - "β”‚ β”‚ β”‚ β”‚ Dimensions: (y: 5490, x: 5490)\n", - "β”‚ β”‚ β”‚ β”‚ Coordinates:\n", - "β”‚ β”‚ β”‚ β”‚ * y (y) int64 44kB 5000030 5000010 4999990 ... 4890290 4890270 4890250\n", - "β”‚ β”‚ β”‚ β”‚ * x (x) int64 44kB 300010 300030 300050 300070 ... 409750 409770 409790\n", - "β”‚ β”‚ β”‚ β”‚ Data variables:\n", - "β”‚ β”‚ β”‚ β”‚ b05 (y, x) uint8 30MB dask.array\n", - "β”‚ β”‚ β”‚ β”‚ b06 (y, x) uint8 30MB dask.array\n", - "β”‚ β”‚ β”‚ β”‚ b07 (y, x) uint8 30MB dask.array\n", - "β”‚ β”‚ β”‚ β”‚ b11 (y, x) uint8 30MB dask.array\n", - "β”‚ β”‚ β”‚ β”‚ b12 (y, x) uint8 30MB dask.array\n", - "β”‚ β”‚ β”‚ β”‚ b8a (y, x) uint8 30MB dask.array\n", - "β”‚ β”‚ β”‚ └── Group: /conditions/mask/detector_footprint/r60m\n", - "β”‚ β”‚ β”‚ Dimensions: (y: 1830, x: 1830)\n", - "β”‚ β”‚ β”‚ Coordinates:\n", - "β”‚ β”‚ β”‚ * y (y) int64 15kB 5000010 4999950 4999890 ... 4890390 4890330 4890270\n", - "β”‚ β”‚ β”‚ * x (x) int64 15kB 300030 300090 300150 300210 ... 409650 409710 409770\n", - "β”‚ β”‚ β”‚ Data variables:\n", - "β”‚ β”‚ β”‚ b01 (y, x) uint8 3MB dask.array\n", - "β”‚ β”‚ β”‚ b09 (y, x) uint8 3MB dask.array\n", - "β”‚ β”‚ β”‚ b10 (y, x) uint8 3MB dask.array\n", - "β”‚ β”‚ └── Group: /conditions/mask/l1c_classification\n", - "β”‚ β”‚ └── Group: /conditions/mask/l1c_classification/r60m\n", - "β”‚ β”‚ Dimensions: (y: 1830, x: 1830)\n", - "β”‚ β”‚ Coordinates:\n", - "β”‚ β”‚ * y (y) int64 15kB 5000010 4999950 4999890 ... 4890390 4890330 4890270\n", - "β”‚ β”‚ * x (x) int64 15kB 300030 300090 300150 300210 ... 409650 409710 409770\n", - "β”‚ β”‚ Data variables:\n", - "β”‚ β”‚ b00 (y, x) uint8 3MB dask.array\n", - "β”‚ └── Group: /conditions/meteorology\n", - "β”‚ β”œβ”€β”€ Group: /conditions/meteorology/cams\n", - "β”‚ β”‚ Dimensions: (latitude: 9, longitude: 9)\n", - "β”‚ β”‚ Coordinates:\n", - "β”‚ β”‚ * latitude (latitude) float64 72B 45.13 45.0 44.88 ... 44.4 44.28 44.16\n", - "β”‚ β”‚ * longitude (longitude) float64 72B 6.457 6.634 6.811 ... 7.695 7.872\n", - "β”‚ β”‚ isobaricInhPa float64 8B ...\n", - "β”‚ β”‚ number int64 8B ...\n", - "β”‚ β”‚ step int64 8B ...\n", - "β”‚ β”‚ surface float64 8B ...\n", - "β”‚ β”‚ time datetime64[ns] 8B ...\n", - "β”‚ β”‚ valid_time datetime64[ns] 8B ...\n", - "β”‚ β”‚ Data variables:\n", - "β”‚ β”‚ aod1240 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ aod469 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ aod550 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ aod670 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ aod865 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ bcaod550 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ duaod550 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ omaod550 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ ssaod550 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ suaod550 (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ z (latitude, longitude) float32 324B dask.array\n", - "β”‚ β”‚ Attributes: (7)\n", - "β”‚ └── Group: /conditions/meteorology/ecmwf\n", - "β”‚ Dimensions: (latitude: 9, longitude: 9)\n", - "β”‚ Coordinates:\n", - "β”‚ * latitude (latitude) float64 72B 45.13 45.0 44.88 ... 44.4 44.28 44.16\n", - "β”‚ * longitude (longitude) float64 72B 6.457 6.634 6.811 ... 7.695 7.872\n", - "β”‚ isobaricInhPa float64 8B ...\n", - "β”‚ number int64 8B ...\n", - "β”‚ step int64 8B ...\n", - "β”‚ surface float64 8B ...\n", - "β”‚ time datetime64[ns] 8B ...\n", - "β”‚ valid_time datetime64[ns] 8B ...\n", - "β”‚ Data variables:\n", - "β”‚ msl (latitude, longitude) float32 324B dask.array\n", - "β”‚ r (latitude, longitude) float32 324B dask.array\n", - "β”‚ tco3 (latitude, longitude) float32 324B dask.array\n", - "β”‚ tcwv (latitude, longitude) float32 324B dask.array\n", - "β”‚ u10 (latitude, longitude) float32 324B dask.array\n", - "β”‚ v10 (latitude, longitude) float32 324B dask.array\n", - "β”‚ Attributes: (7)\n", - "β”œβ”€β”€ Group: /measurements\n", - "β”‚ └── Group: /measurements/reflectance\n", - "β”‚ β”œβ”€β”€ Group: /measurements/reflectance/r10m\n", - "β”‚ β”‚ Dimensions: (y: 10980, x: 10980)\n", - "β”‚ β”‚ Coordinates:\n", - "β”‚ β”‚ * y (y) int64 88kB 5000035 5000025 5000015 ... 4890265 4890255 4890245\n", - "β”‚ β”‚ * x (x) int64 88kB 300005 300015 300025 300035 ... 409775 409785 409795\n", - "β”‚ β”‚ Data variables:\n", - "β”‚ β”‚ b02 (y, x) float64 964MB dask.array\n", - "β”‚ β”‚ b03 (y, x) float64 964MB dask.array\n", - "β”‚ β”‚ b04 (y, x) float64 964MB dask.array\n", - "β”‚ β”‚ b08 (y, x) float64 964MB dask.array\n", - "β”‚ β”œβ”€β”€ Group: /measurements/reflectance/r20m\n", - "β”‚ β”‚ Dimensions: (y: 5490, x: 5490)\n", - "β”‚ β”‚ Coordinates:\n", - "β”‚ β”‚ * y (y) int64 44kB 5000030 5000010 4999990 ... 4890290 4890270 4890250\n", - "β”‚ β”‚ * x (x) int64 44kB 300010 300030 300050 300070 ... 409750 409770 409790\n", - "β”‚ β”‚ Data variables:\n", - "β”‚ β”‚ b05 (y, x) float64 241MB dask.array\n", - "β”‚ β”‚ b06 (y, x) float64 241MB dask.array\n", - "β”‚ β”‚ b07 (y, x) float64 241MB dask.array\n", - "β”‚ β”‚ b11 (y, x) float64 241MB dask.array\n", - "β”‚ β”‚ b12 (y, x) float64 241MB dask.array\n", - "β”‚ β”‚ b8a (y, x) float64 241MB dask.array\n", - "β”‚ └── Group: /measurements/reflectance/r60m\n", - "β”‚ Dimensions: (y: 1830, x: 1830)\n", - "β”‚ Coordinates:\n", - "β”‚ * y (y) int64 15kB 5000010 4999950 4999890 ... 4890390 4890330 4890270\n", - "β”‚ * x (x) int64 15kB 300030 300090 300150 300210 ... 409650 409710 409770\n", - "β”‚ Data variables:\n", - "β”‚ b01 (y, x) float64 27MB dask.array\n", - "β”‚ b09 (y, x) float64 27MB dask.array\n", - "β”‚ b10 (y, x) float64 27MB dask.array\n", - "└── Group: /quality\n", - " β”œβ”€β”€ Group: /quality/l1c_quicklook\n", - " β”‚ └── Group: /quality/l1c_quicklook/r10m\n", - " β”‚ Dimensions: (band: 3, y: 10980, x: 10980)\n", - " β”‚ Coordinates:\n", - " β”‚ * band (band) int64 24B 1 2 3\n", - " β”‚ * y (y) int64 88kB 5000035 5000025 5000015 ... 4890265 4890255 4890245\n", - " β”‚ * x (x) int64 88kB 300005 300015 300025 300035 ... 409775 409785 409795\n", - " β”‚ Data variables:\n", - " β”‚ tci (band, y, x) uint8 362MB dask.array\n", - " └── Group: /quality/mask\n", - " β”œβ”€β”€ Group: /quality/mask/r10m\n", - " β”‚ Dimensions: (y: 10980, x: 10980)\n", - " β”‚ Coordinates:\n", - " β”‚ * y (y) int64 88kB 5000035 5000025 5000015 ... 4890265 4890255 4890245\n", - " β”‚ * x (x) int64 88kB 300005 300015 300025 300035 ... 409775 409785 409795\n", - " β”‚ Data variables:\n", - " β”‚ b02 (y, x) uint8 121MB dask.array\n", - " β”‚ b03 (y, x) uint8 121MB dask.array\n", - " β”‚ b04 (y, x) uint8 121MB dask.array\n", - " β”‚ b08 (y, x) uint8 121MB dask.array\n", - " β”œβ”€β”€ Group: /quality/mask/r20m\n", - " β”‚ Dimensions: (y: 5490, x: 5490)\n", - " β”‚ Coordinates:\n", - " β”‚ * y (y) int64 44kB 5000030 5000010 4999990 ... 4890290 4890270 4890250\n", - " β”‚ * x (x) int64 44kB 300010 300030 300050 300070 ... 409750 409770 409790\n", - " β”‚ Data variables:\n", - " β”‚ b05 (y, x) uint8 30MB dask.array\n", - " β”‚ b06 (y, x) uint8 30MB dask.array\n", - " β”‚ b07 (y, x) uint8 30MB dask.array\n", - " β”‚ b11 (y, x) uint8 30MB dask.array\n", - " β”‚ b12 (y, x) uint8 30MB dask.array\n", - " β”‚ b8a (y, x) uint8 30MB dask.array\n", - " └── Group: /quality/mask/r60m\n", - " Dimensions: (y: 1830, x: 1830)\n", - " Coordinates:\n", - " * y (y) int64 15kB 5000010 4999950 4999890 ... 4890390 4890330 4890270\n", - " * x (x) int64 15kB 300030 300090 300150 300210 ... 409650 409710 409770\n", - " Data variables:\n", - " b01 (y, x) uint8 3MB dask.array\n", - " b09 (y, x) uint8 3MB dask.array\n", - " b10 (y, x) uint8 3MB dask.array" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "%%time\n", - "dt = xr.open_datatree(path, engine=\"eopf-zarr\", op_mode=\"native\", chunks={})\n", - "dt" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "fc9f4597-58ce-4446-9095-9f891a812fd2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", + "
<xarray.DatasetView> Size: 0B\n",
+       "Dimensions:  ()\n",
+       "Data variables:\n",
+       "    *empty*\n",
+       "Attributes: (3)