Skip to content

Commit 57f1f2b

Browse files
committed
added air temperature and rel humidity
1 parent 9be785d commit 57f1f2b

File tree

9 files changed

+155
-4
lines changed

9 files changed

+155
-4
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.bc.fiduceo.reader.insitu.tao.preproc;
2+
3+
class AIRTRecord {
4+
5+
int date;
6+
String AIRT;
7+
String Q;
8+
String M;
9+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.bc.fiduceo.reader.insitu.tao.preproc;
2+
3+
import org.esa.snap.core.util.StringUtils;
4+
5+
import java.io.BufferedReader;
6+
import java.io.File;
7+
import java.io.FileReader;
8+
import java.io.IOException;
9+
import java.util.HashMap;
10+
11+
class AirtProvider {
12+
13+
private HashMap<Integer, AIRTRecord> airtMap;
14+
15+
void open(File airtFile) {
16+
airtMap = new HashMap<>();
17+
18+
try (final FileReader fileReader = new FileReader(airtFile)) {
19+
final BufferedReader bufferedReader = new BufferedReader(fileReader);
20+
String line;
21+
while ((line = bufferedReader.readLine()) != null) {
22+
if (!Character.isDigit(line.charAt(0))) {
23+
continue;
24+
}
25+
26+
final AIRTRecord airtRecord = new AIRTRecord();
27+
final String[] tokens = StringUtils.split(line, new char[]{' '}, true);
28+
airtRecord.date = TaoPreProcessor.toUnixEpoch(tokens[0], tokens[1]);
29+
airtRecord.AIRT = tokens[2];
30+
airtRecord.Q = tokens[3];
31+
airtRecord.M = tokens[4];
32+
33+
airtMap.put(airtRecord.date, airtRecord);
34+
}
35+
36+
} catch (IOException e) {
37+
throw new RuntimeException(e);
38+
}
39+
}
40+
41+
AIRTRecord get(int date) {
42+
AIRTRecord airtRecord = airtMap.get(date);
43+
if (airtRecord == null) {
44+
airtRecord = new AIRTRecord();
45+
airtRecord.date = date;
46+
airtRecord.AIRT = "-9.99";
47+
airtRecord.Q = "9";
48+
airtRecord.M = "D";
49+
}
50+
51+
return airtRecord;
52+
}
53+
}

core/src/main/java/com/bc/fiduceo/reader/insitu/tao/preproc/Configuration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ class Configuration {
66
String filePrefix;
77
String sssFileName;
88
String sstFileName;
9+
String airtFileName;
10+
String rhFileName;
911
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.bc.fiduceo.reader.insitu.tao.preproc;
2+
3+
import org.esa.snap.core.util.StringUtils;
4+
5+
import java.io.BufferedReader;
6+
import java.io.File;
7+
import java.io.FileReader;
8+
import java.io.IOException;
9+
import java.util.HashMap;
10+
11+
class RHProvider {
12+
13+
private HashMap<Integer, RHRecord> rhMap;
14+
15+
void open(File rhFile) {
16+
rhMap = new HashMap<>();
17+
18+
try (final FileReader fileReader = new FileReader(rhFile)) {
19+
final BufferedReader bufferedReader = new BufferedReader(fileReader);
20+
String line;
21+
while ((line = bufferedReader.readLine()) != null) {
22+
if (!Character.isDigit(line.charAt(0))) {
23+
continue;
24+
}
25+
26+
final RHRecord rhRecord = new RHRecord();
27+
final String[] tokens = StringUtils.split(line, new char[]{' '}, true);
28+
rhRecord.date = TaoPreProcessor.toUnixEpoch(tokens[0], tokens[1]);
29+
rhRecord.RH = tokens[2];
30+
rhRecord.Q = tokens[3];
31+
rhRecord.M = tokens[4];
32+
33+
rhMap.put(rhRecord.date, rhRecord);
34+
}
35+
} catch (IOException e) {
36+
throw new RuntimeException(e);
37+
}
38+
}
39+
40+
RHRecord get(int date) {
41+
RHRecord rhRecord = rhMap.get(date);
42+
if (rhRecord == null) {
43+
rhRecord = new RHRecord();
44+
rhRecord.date = date;
45+
rhRecord.RH = "-9.99";
46+
rhRecord.Q = "9";
47+
rhRecord.M = "D";
48+
}
49+
50+
return rhRecord;
51+
}
52+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.bc.fiduceo.reader.insitu.tao.preproc;
2+
3+
class RHRecord {
4+
5+
int date;
6+
String RH;
7+
String Q;
8+
String M;
9+
}

core/src/main/java/com/bc/fiduceo/reader/insitu/tao/preproc/SSTProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ SSTRecord get(int date) {
4141
SSTRecord sstRecord = sstMap.get(date);
4242
if (sstRecord == null) {
4343
sstRecord = new SSTRecord();
44+
sstRecord.date = date;
4445
sstRecord.SST = "-9.999";
4546
sstRecord.Q = "9";
4647
sstRecord.M = "D";

core/src/main/java/com/bc/fiduceo/reader/insitu/tao/preproc/TAORecord.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ class TAORecord {
44
int date;
55
String SSS;
66
String SST;
7+
String AIRT;
8+
String RH;
79
String Q;
810
String M;
911

1012
String toLine() {
11-
return date + " " + SSS + " " + SST + " " +Q + " " + M;
13+
return date + " " + SSS + " " + SST + " " + AIRT + " " + RH + " " + Q + " " + M;
1214
}
1315
}

core/src/main/java/com/bc/fiduceo/reader/insitu/tao/preproc/TaoPreProcessor.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ public static void main(String[] args) throws IOException {
1616
configuration.filePrefix = "TAO_T0N110W";
1717
configuration.sssFileName = "TAO_T0N110W_D_SALT_hourly.ascii";
1818
configuration.sstFileName = "TAO_T0N110W_D_SST_10min.ascii";
19+
configuration.airtFileName = "TAO_T0N110W_D_AIRT_10min.ascii";
20+
configuration.rhFileName = "TAO_T0N110W_D_RH_10min.ascii";
1921

2022
// --- read all we need ---
2123
final File sourceDir = new File(configuration.sourceDir);
@@ -25,6 +27,12 @@ public static void main(String[] args) throws IOException {
2527
final SSTProvider sstProvider = new SSTProvider();
2628
sstProvider.open(new File(sourceDir, configuration.sstFileName));
2729

30+
final AirtProvider airtProvider = new AirtProvider();
31+
airtProvider.open(new File(sourceDir, configuration.airtFileName));
32+
33+
final RHProvider rhProvider = new RHProvider();
34+
rhProvider.open(new File(sourceDir, configuration.rhFileName));
35+
2836
final HashMap<String, List<TAORecord>> taoMap = new HashMap<>();
2937

3038
// --- assemble final records ---
@@ -38,6 +46,7 @@ public static void main(String[] args) throws IOException {
3846
String M = "";
3947
String Q = "";
4048

49+
// salinity
4150
taoRecord.date = sssRecord.date;
4251
taoRecord.SSS = sssRecord.SSS;
4352
M = M.concat(sssRecord.M);
@@ -49,6 +58,18 @@ public static void main(String[] args) throws IOException {
4958
M = M.concat(sstRecord.M);
5059
Q = Q.concat(sstRecord.Q);
5160

61+
// airt data
62+
final AIRTRecord airtRecord = airtProvider.get(sssRecord.date);
63+
taoRecord.AIRT = airtRecord.AIRT;
64+
M = M.concat(airtRecord.M);
65+
Q = Q.concat(airtRecord.Q);
66+
67+
// relative humidity
68+
final RHRecord rhRecord = rhProvider.get(sssRecord.date);
69+
taoRecord.RH = rhRecord.RH;
70+
M = M.concat(rhRecord.M);
71+
Q = Q.concat(rhRecord.Q);
72+
5273
taoRecord.M = M;
5374
taoRecord.Q = Q;
5475

core/src/test/java/com/bc/fiduceo/reader/insitu/tao/preproc/TAORecordTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ public void testToString() {
1212
taoRecord.date = 1543910594;
1313
taoRecord.SSS = "23.5";
1414
taoRecord.SST = "24.6";
15-
taoRecord.Q = "23";
16-
taoRecord.M = "DM";
15+
taoRecord.AIRT = "25.7";
16+
taoRecord.RH = "26.8";
17+
taoRecord.Q = "2342";
18+
taoRecord.M = "DMDM";
1719

18-
assertEquals("1543910594 23.5 24.6 23 DM", taoRecord.toLine());
20+
assertEquals("1543910594 23.5 24.6 25.7 26.8 2342 DMDM", taoRecord.toLine());
1921

2022
}
2123
}

0 commit comments

Comments
 (0)