Skip to content

Commit 183d1e4

Browse files
Update GeoZarr CRS handling in geozarr.py (EOPF-Explorer#60)
* Update launch.json with new GeoZarr URLs and modify geozarr.py to set CRS from metadata * fix: enhance CRS handling in setup_datatree_metadata_geozarr_spec_compliant function * fix: improve formatting of CRS setting log message in setup_datatree_metadata_geozarr_spec_compliant function
1 parent 2275535 commit 183d1e4

2 files changed

Lines changed: 17 additions & 4 deletions

File tree

.vscode/launch.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@
1313
"module": "eopf_geozarr",
1414
"args": [
1515
"convert",
16-
"https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202508-s02msil2a/11/products/cpm_v256/S2C_MSIL2A_20250811T112131_N0511_R037_T29TPF_20250811T152216.zarr",
16+
// "https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202508-s02msil2a/11/products/cpm_v256/S2C_MSIL2A_20250811T112131_N0511_R037_T29TPF_20250811T152216.zarr",
17+
// "https://objects.eodc.eu:443/e05ab01a9d56408d82ac32d69a5aae2a:202511-s02msil2a-eu/04/products/cpm_v262/S2C_MSIL2A_20251104T103231_N0511_R108_T31TGH_20251104T142114.zarr",
18+
// "https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202511-s02msil2a-eu/04/products/cpm_v262/S2A_MSIL2A_20251104T131341_N0511_R081_T27WVM_20251104T143709.zarr",
19+
"https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202510-s02msil2a-eu/25/products/cpm_v256/S2A_MSIL2A_20251025T095111_N0511_R079_T33SVB_20251025T121315.zarr",
1720
"./tests-output/eopf_geozarr/s2l2_test.zarr",
18-
"--groups", "/measurements/reflectance/r10m", "/measurements/reflectance/r20m", "/measurements/reflectance/r60m", "/quality/l2a_quicklook/r10m",
21+
"--groups", "/measurements/reflectance/r20m", "/measurements/reflectance/r60m",
1922
"--crs-groups", "/conditions/geometry",
2023
"--spatial-chunk", "512",
2124
"--min-dimension", "256",
@@ -251,7 +254,8 @@
251254
"module": "eopf_geozarr",
252255
"args": [
253256
"info",
254-
"https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202508-s02msil2a/11/products/cpm_v256/S2C_MSIL2A_20250811T112131_N0511_R037_T29TPF_20250811T152216.zarr",
257+
// "https://objects.eodc.eu/e05ab01a9d56408d82ac32d69a5aae2a:202508-s02msil2a/11/products/cpm_v256/S2C_MSIL2A_20250811T112131_N0511_R037_T29TPF_20250811T152216.zarr",
258+
"https://objects.eodc.eu:443/e05ab01a9d56408d82ac32d69a5aae2a:202511-s02msil2a-eu/04/products/cpm_v262/S2C_MSIL2A_20251104T103231_N0511_R108_T31TGH_20251104T142114.zarr",
255259
"--verbose",
256260
"--html-output", "eopf_dataset_info.html"
257261
],
@@ -290,7 +294,8 @@
290294
"args": [
291295
"info",
292296
// "s3://esa-zarr-sentinel-explorer-fra/tests-output/sentinel-2-l2a/S2A_MSIL2A_20250704T094051_N0511_R036_T33SWB_20250704T115824.zarr",
293-
"s3://esa-zarr-sentinel-explorer-fra/tests-output/sentinel-2-l2a-opt/S2A_MSIL2A_20250908T100041_N0511_R122_T32TQM_20250908T115116.zarr",
297+
// "s3://esa-zarr-sentinel-explorer-fra/tests-output/sentinel-2-l2a-opt/S2A_MSIL2A_20250908T100041_N0511_R122_T32TQM_20250908T115116.zarr",
298+
"s3://esa-zarr-sentinel-explorer-fra/tests-output/sentinel-2-l2a-dp-test/S2C_MSIL2A_20251104T103231_N0511_R108_T31TGH_20251104T142114.zarr",
294299
"--verbose",
295300
"--html-output", "dataset_info.html"
296301
],

src/eopf_geozarr/conversion/geozarr.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@ def setup_datatree_metadata_geozarr_spec_compliant(
173173
"""
174174
geozarr_groups: dict[str, xr.Dataset] = {}
175175
grid_mapping_var_name = "spatial_ref"
176+
epsg_CPM_260 = dt.attrs.get("other_metadata", {}).get("horizontal_CRS_code", None)
177+
if epsg_CPM_260 is not None:
178+
epsg_CPM_260 = epsg_CPM_260.split(":")[-1]
176179

177180
for key in groups:
178181
if not dt[key].data_vars:
@@ -214,6 +217,11 @@ def setup_datatree_metadata_geozarr_spec_compliant(
214217
epsg = ds[var_name].attrs["proj:epsg"]
215218
print(f" Setting CRS for {var_name} to EPSG:{epsg}")
216219
ds = ds.rio.write_crs(f"epsg:{epsg}")
220+
elif epsg_CPM_260:
221+
print(
222+
f" Setting CRS for {var_name} to EPSG:{epsg_CPM_260} (CPM 2.6.0 default)"
223+
)
224+
ds = ds.rio.write_crs(f"epsg:{epsg_CPM_260}")
217225

218226
# Add _ARRAY_DIMENSIONS to coordinate variables
219227
_add_coordinate_metadata(ds)

0 commit comments

Comments
 (0)