Skip to content
Snippets Groups Projects
Commit 8daceb4b authored by Jonny Schäfer's avatar Jonny Schäfer
Browse files

Add Interval field and parsing

parent 2d3702b0
No related branches found
No related tags found
No related merge requests found
...@@ -76,6 +76,20 @@ func (c *Composite) parseHeader(reader *bufio.Reader) error { ...@@ -76,6 +76,20 @@ func (c *Composite) parseHeader(reader *bufio.Reader) error {
c.ForecastTime = c.CaptureTime.Add(time.Duration(min) * time.Minute) c.ForecastTime = c.CaptureTime.Add(time.Duration(min) * time.Minute)
} }
// Parse Interval - Example "INT 5" or "INT1008"
if intr, ok := section["INT"]; ok {
min := 0
if _, err := fmt.Sscanf(intr, "%d", &min); err != nil {
return newError("parseHeader", "could not parse interval: "+err.Error())
}
c.Interval = time.Duration(min) * time.Minute
switch c.Product {
case "W1", "W2", "W3", "W4":
c.Interval *= 10
}
}
// Parse Dimensions - Example: "GP 450x 450" or "BG460460" or "GP 1500x1400" // Parse Dimensions - Example: "GP 450x 450" or "BG460460" or "GP 1500x1400"
dim := section["GP"] dim := section["GP"]
if bg, ok := section["BG"]; ok { if bg, ok := section["BG"]; ok {
......
...@@ -16,6 +16,7 @@ type headerTestcase struct { ...@@ -16,6 +16,7 @@ type headerTestcase struct {
expProduct string expProduct string
expCaptureTime time.Time expCaptureTime time.Time
expForecastTime time.Time expForecastTime time.Time
expInterval time.Duration
expDx int expDx int
expDy int expDy int
expDataLength int expDataLength int
...@@ -65,6 +66,7 @@ func TestParseHeaderFZ(t *testing.T) { ...@@ -65,6 +66,7 @@ func TestParseHeaderFZ(t *testing.T) {
ht.expProduct = "FZ" ht.expProduct = "FZ"
ht.expCaptureTime, err1 = time.Parse(time.RFC1123, "Thu, 28 Jul 2016 23:05:00 CEST") ht.expCaptureTime, err1 = time.Parse(time.RFC1123, "Thu, 28 Jul 2016 23:05:00 CEST")
ht.expForecastTime, err2 = time.Parse(time.RFC1123, "Fri, 29 Jul 2016 00:45:00 CEST") ht.expForecastTime, err2 = time.Parse(time.RFC1123, "Fri, 29 Jul 2016 00:45:00 CEST")
ht.expInterval = 5 * time.Minute
ht.expDx = 450 ht.expDx = 450
ht.expDy = 450 ht.expDy = 450
ht.expDataLength = 405160 - 154 // BY - header_etx_length ht.expDataLength = 405160 - 154 // BY - header_etx_length
...@@ -106,6 +108,12 @@ func testParseHeader(t *testing.T, ht *headerTestcase) { ...@@ -106,6 +108,12 @@ func testParseHeader(t *testing.T, ht *headerTestcase) {
dummy.ForecastTime.String(), ht.expForecastTime.String()) dummy.ForecastTime.String(), ht.expForecastTime.String())
} }
// Interval
if dummy.Interval != ht.expInterval {
t.Errorf("%s.parseHeader(): Interval: %#v; expected: %#v", ht.expProduct,
dummy.Interval.String(), ht.expInterval.String())
}
// Dx Dy // Dx Dy
if dummy.Dx != ht.expDx || dummy.Dy != ht.expDy { if dummy.Dx != ht.expDx || dummy.Dy != ht.expDy {
t.Errorf("%s.parseHeader(): Dx: %d Dy: %d; expected Dx: %d Dy: %d", ht.expProduct, t.Errorf("%s.parseHeader(): Dx: %d Dy: %d; expected Dx: %d Dy: %d", ht.expProduct,
......
...@@ -62,6 +62,7 @@ type Composite struct { ...@@ -62,6 +62,7 @@ type Composite struct {
CaptureTime time.Time CaptureTime time.Time
ForecastTime time.Time ForecastTime time.Time
Interval time.Duration
Data [][]RVP6 // rvp-6 data for each point [y][x] Data [][]RVP6 // rvp-6 data for each point [y][x]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment