Skip to content

Commit 5a223e2

Browse files
committed
added getVariables
1 parent 0555f70 commit 5a223e2

File tree

3 files changed

+90
-1
lines changed

3 files changed

+90
-1
lines changed

core/src/main/java/com/bc/fiduceo/reader/smos/SmosL1CDailyGriddedReader.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,27 @@ class SmosL1CDailyGriddedReader extends NetCDFReader {
3333

3434
private final ReaderContext readerContext;
3535
private final Rectangle2D.Float boundary;
36+
private final List<String> variablesToSkip;
37+
private final List<String> variables2D;
3638

3739
private File productDir;
3840
private PixelLocator pixelLocator;
3941
private TimeLocator timeLocator;
4042

43+
4144
SmosL1CDailyGriddedReader(ReaderContext readerContext) {
4245
this.readerContext = readerContext;
4346
this.boundary = new Rectangle2D.Float(-180.f, -86.72f, 360.f, 173.44f);
47+
48+
variablesToSkip = new ArrayList<>();
49+
variablesToSkip.add("lat");
50+
variablesToSkip.add("lon");
51+
variablesToSkip.add("inc");
52+
variablesToSkip.add("dinc");
53+
54+
variables2D = new ArrayList<>();
55+
variables2D.add("X_Swath");
56+
variables2D.add("Grid_Point_Mask");
4457
}
4558

4659
@Override
@@ -172,7 +185,26 @@ public ArrayInt.D2 readAcquisitionTime(int x, int y, Interval interval) throws I
172185

173186
@Override
174187
public List<Variable> getVariables() throws InvalidRangeException, IOException {
175-
throw new IllegalStateException("not implemented");
188+
final List<Variable> variablesInFile = netcdfFile.getVariables();
189+
final ArrayList<Variable> exportVariables = new ArrayList<>();
190+
191+
for (Variable variable : variablesInFile) {
192+
final String variableName = variable.getShortName();
193+
if (variablesToSkip.contains(variableName)) {
194+
continue;
195+
}
196+
if (variables2D.contains(variableName)) {
197+
exportVariables.add(variable);
198+
continue;
199+
}
200+
201+
// the remainder is 3d with 15 angle layers tb 2022-10-12
202+
final ArrayList<Variable> bandVariables = new ArrayList<>();
203+
addLayered3DVariables(bandVariables, variable, 15, 0);
204+
exportVariables.addAll(bandVariables);
205+
}
206+
207+
return exportVariables;
176208
}
177209

178210
@Override

core/src/test/java/com/bc/fiduceo/NCTestUtils.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ public static void assertAttribute(Variable variable, String attributeName, Stri
152152
assertEquals(expected, attribute.getStringValue());
153153
} else if (dataType == DataType.FLOAT) {
154154
assertEquals(Float.parseFloat(expected), attribute.getNumericValue().floatValue(), 1e-8);
155+
} else if (dataType == DataType.INT) {
156+
assertEquals(Integer.parseInt(expected), attribute.getNumericValue().intValue(), 1e-8);
155157
} else if (dataType == DataType.SHORT) {
156158
if (attribute.isArray()) {
157159
final String[] segments = expected.split(",");

core/src/test/java/com/bc/fiduceo/reader/smos/SmosL1CDailyGriddedReader_IO_Test.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.bc.fiduceo.reader.smos;
22

33
import com.bc.fiduceo.IOTestRunner;
4+
import com.bc.fiduceo.NCTestUtils;
45
import com.bc.fiduceo.TestUtil;
56
import com.bc.fiduceo.core.Dimension;
67
import com.bc.fiduceo.core.NodeType;
@@ -14,11 +15,14 @@
1415
import org.junit.Before;
1516
import org.junit.Test;
1617
import org.junit.runner.RunWith;
18+
import ucar.ma2.InvalidRangeException;
19+
import ucar.nc2.Variable;
1720

1821
import java.awt.geom.Point2D;
1922
import java.io.File;
2023
import java.io.IOException;
2124
import java.util.Date;
25+
import java.util.List;
2226

2327
import static org.junit.Assert.*;
2428

@@ -163,6 +167,57 @@ public void testGetPixelLocator_CDF3TA() throws IOException {
163167
}
164168
}
165169

170+
@Test
171+
public void testGetVariables_CDF3TD() throws IOException, InvalidRangeException {
172+
// X_Swath, Grid_Point_Mask
173+
// BT_H(15), BT_V(15), BT_3(15), BT_4(15),
174+
// Pixel_Radiometric_Accuracy_H(15), Pixel_Radiometric_Accuracy_V(15), Pixel_Radiometric_Accuracy_3(15), Pixel_Radiometric_Accuracy_4(15)
175+
// Pixel_BT_Standard_Deviation_H(15), Pixel_BT_Standard_Deviation_V(15), Pixel_BT_Standard_Deviation_3(15), Pixel_BT_Standard_Deviation_4(15)
176+
// Incidence_Angle(15), Azimuth_Angle(15), Footprint_Axis1(15), Footprint_Axis2(15),
177+
// Xi(15), Eta(15), Nviews(15), Nb_RFI_Flags(15), Nb_SUN_Flags(15)
178+
// Days(15), UTC_Seconds(15), UTC_Microseconds(15)
179+
// 362 variables total
180+
181+
final File file = getCDF3TAFile();
182+
183+
try {
184+
reader.open(file);
185+
186+
final List<Variable> variables = reader.getVariables();
187+
assertEquals(362, variables.size());
188+
189+
Variable variable = variables.get(0);
190+
assertEquals("X_Swath", variable.getShortName());
191+
NCTestUtils.assertAttribute(variable, "_FillValue", "9.96921E36");
192+
193+
variable = variables.get(3);
194+
assertEquals("BT_H_ch02", variable.getShortName());
195+
NCTestUtils.assertAttribute(variable, "_FillValue", "-32768");
196+
197+
variable = variables.get(38);
198+
assertEquals("BT_3_ch07", variable.getShortName());
199+
NCTestUtils.assertAttribute(variable, "_FillValue", "-32768");
200+
201+
variable = variables.get(175);
202+
assertEquals("Pixel_BT_Standard_Deviation_4_ch09", variable.getShortName());
203+
NCTestUtils.assertAttribute(variable, "_FillValue", "-32768");
204+
205+
variable = variables.get(219);
206+
assertEquals("Footprint_Axis1_ch08", variable.getShortName());
207+
NCTestUtils.assertAttribute(variable, "_FillValue", "-32768");
208+
209+
variable = variables.get(305);
210+
assertEquals("Nb_SUN_Flags_ch04", variable.getShortName());
211+
NCTestUtils.assertAttribute(variable, "_FillValue", "-32768");
212+
213+
variable = variables.get(361);
214+
assertEquals("UTC_Microseconds_ch15", variable.getShortName());
215+
NCTestUtils.assertAttribute(variable, "_FillValue", "-2147483647");
216+
} finally {
217+
reader.close();
218+
}
219+
}
220+
166221
@Test
167222
public void testGetSubScenePixelLocator_CDF3TD() throws IOException {
168223
final File file = getCDF3TDFile();

0 commit comments

Comments
 (0)