Skip to content

Commit 8b38ef9

Browse files
committed
Apply CRS metadata
1 parent ff2f8da commit 8b38ef9

File tree

1 file changed

+35
-0
lines changed
  • mpilot/libraries/eems/netcdf

1 file changed

+35
-0
lines changed

mpilot/libraries/eems/netcdf/io.py

+35
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,37 @@ def execute(self, **kwargs):
119119
"missing_value",
120120
):
121121
setattr(out_dimension_variable, attribute, getattr(in_dimension_variable, attribute))
122+
123+
for ncattr in in_dimension_variable.ncattrs():
124+
out_dimension_variable.setncattr(ncattr, in_dimension_variable.getncattr(ncattr))
125+
122126
out_dimension_variable[:] = in_dimension_variable[:]
123127

128+
# Discover CRS metadata (ESRI and CF)
129+
esri_pe = None
130+
grid_mapping = None
131+
for variable in dim_dataset.variables.values():
132+
if "esri_pe_string" in variable.ncattrs():
133+
esri_pe = variable.getncattr("esri_pe_string")
134+
if "grid_mapping" in variable.ncattrs():
135+
grid_mapping_name = variable.getncattr("grid_mapping")
136+
if grid_mapping_name in dim_dataset.variables:
137+
grid_mapping = grid_mapping_name
138+
grid_mapping_in = dim_dataset.variables[grid_mapping]
139+
140+
for dimension in grid_mapping_in.dimensions:
141+
if dimension not in dataset.dimensions:
142+
dataset.createDimension(dimension, dim_dataset.dimensions[dimension].size)
143+
144+
grid_mapping_out = dataset.createVariable(
145+
grid_mapping, grid_mapping_in.dtype, grid_mapping_in.dimensions
146+
)
147+
148+
for ncattr in grid_mapping_in.ncattrs():
149+
grid_mapping_out.setncattr(ncattr, grid_mapping_in.getncattr(ncattr))
150+
151+
break
152+
124153
mask = numpy.copy(arrays[0].mask)
125154
for arr in arrays[1:]:
126155
mask |= arr.mask
@@ -136,4 +165,10 @@ def execute(self, **kwargs):
136165
)
137166
variable[:] = numpy.ma.MaskedArray(command.result.data, mask)
138167

168+
# Apply CRS metadata
169+
if esri_pe:
170+
variable.setncattr("esri_pe_string", esri_pe)
171+
if grid_mapping:
172+
variable.setncattr("grid_mapping", grid_mapping)
173+
139174
return True

0 commit comments

Comments
 (0)