Commit 8daceb4b authored by Jonny Schäfer's avatar Jonny Schäfer
Browse files

Add Interval field and parsing

parent 2d3702b0
......@@ -76,6 +76,20 @@ func (c *Composite) parseHeader(reader *bufio.Reader) error {
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"
dim := section["GP"]
if bg, ok := section["BG"]; ok {
......
......@@ -16,6 +16,7 @@ type headerTestcase struct {
expProduct string
expCaptureTime time.Time
expForecastTime time.Time
expInterval time.Duration
expDx int
expDy int
expDataLength int
......@@ -65,6 +66,7 @@ func TestParseHeaderFZ(t *testing.T) {
ht.expProduct = "FZ"
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.expInterval = 5 * time.Minute
ht.expDx = 450
ht.expDy = 450
ht.expDataLength = 405160 - 154 // BY - header_etx_length
......@@ -106,6 +108,12 @@ func testParseHeader(t *testing.T, ht *headerTestcase) {
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
if dummy.Dx != ht.expDx || dummy.Dy != ht.expDy {
t.Errorf("%s.parseHeader(): Dx: %d Dy: %d; expected Dx: %d Dy: %d", ht.expProduct,
......
......@@ -62,6 +62,7 @@ type Composite struct {
CaptureTime time.Time
ForecastTime time.Time
Interval time.Duration
Data [][]RVP6 // rvp-6 data for each point [y][x]
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment