Skip to content

Commit 4bc9c9c

Browse files
authored
Merge pull request #1453 from Yaqiang/develop
bugfix for zarr attribute reading
2 parents 2a354f9 + 0596d49 commit 4bc9c9c

3 files changed

Lines changed: 16 additions & 8 deletions

File tree

cdm/zarr/src/main/java/ucar/nc2/iosp/zarr/ZarrHeader.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -335,9 +335,8 @@ private List<Attribute> makeAttributes(RandomAccessDirectoryItem item) {
335335

336336
// create Attribute objects
337337
List<Attribute> attrs = new ArrayList<>();
338-
attrMap.keySet().forEach(key -> {
338+
attrMap.forEach((key, val) -> {
339339
Attribute.Builder attr = Attribute.builder(key);
340-
Object val = attrMap.get(key);
341340
if (val instanceof Collection<?>) {
342341
Collection<?> collection = (Collection<?>) val;
343342
if (collection.isEmpty() && key.equals(ARRAYDIMENSIONS)) {
@@ -349,7 +348,7 @@ private List<Attribute> makeAttributes(RandomAccessDirectoryItem item) {
349348
} else if (val instanceof Number) {
350349
attr.setNumericValue((Number) val, false);
351350
} else {
352-
attr.setStringValue((String) val);
351+
attr.setStringValue(String.valueOf(val));
353352
}
354353
attrs.add(attr.build());
355354
});

cdm/zarr/src/test/data/z0_atm.zip

3.32 KB
Binary file not shown.

cdm/zarr/src/test/java/ucar/nc2/iosp/zarr/TestZarrIosp.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,7 @@
1616
import ucar.ma2.DataType;
1717
import ucar.ma2.InvalidRangeException;
1818
import ucar.ma2.Section;
19-
import ucar.nc2.Dimension;
20-
import ucar.nc2.Group;
21-
import ucar.nc2.NetcdfFile;
22-
import ucar.nc2.NetcdfFiles;
23-
import ucar.nc2.Variable;
19+
import ucar.nc2.*;
2420

2521
import java.io.IOException;
2622
import java.nio.ByteOrder;
@@ -43,6 +39,7 @@ public class TestZarrIosp {
4339
private static final String NON_ZARR_FILENAME = "nonZarrTestData.nc.zip";
4440
private static final String FILL_VALUES_FILENAME = "fill_values.zarr";
4541
private static final String SCALAR_GEOZARR_FILENAME = "geozarr/xyt-raster.zarr";
42+
private static final String BOOLEAN_ATTRIBUTE_FILENAME = "z0_atm.zip";
4643

4744
// test store paths
4845
private static final String OBJECT_STORE_ZARR_URI = ZarrTestsCommon.S3_PREFIX + ZarrTestsCommon.AWS_BUCKET_NAME + "?"
@@ -64,6 +61,10 @@ public class TestZarrIosp {
6461
// scalar geozarr data
6562
private static final String SCALAR_GEOZARR_DATA = ZarrTestsCommon.LOCAL_TEST_DATA_PATH + SCALAR_GEOZARR_FILENAME;
6663

64+
// Boolean attribute data
65+
private static final String BOOLEAN_ATTRIBUTE_DATA =
66+
ZarrTestsCommon.LOCAL_TEST_DATA_PATH + BOOLEAN_ATTRIBUTE_FILENAME;
67+
6768
private static List<String> stores;
6869

6970
@BeforeClass
@@ -277,6 +278,14 @@ public void testReadNonZarrZipFile() throws IOException {
277278
}
278279
}
279280

281+
@Test
282+
public void testReadBooleanAttribute() throws IOException {
283+
NetcdfFile ncfile = NetcdfFiles.open(BOOLEAN_ATTRIBUTE_DATA);
284+
Variable var = ncfile.findVariable("CONST_inst_z0_atm/orog");
285+
Attribute hiopy = var.findAttribute("hiopy::enable");
286+
assertThat(hiopy.getValue(0).equals("true"));
287+
}
288+
280289
@Test
281290
public void testFOrder() throws IOException, InvalidRangeException {
282291
// test reading F order stored array

0 commit comments

Comments
 (0)