forked from gsn/predictor
updated downloader
This commit is contained in:
parent
ca95e06ab7
commit
8e9f117799
30 changed files with 1209 additions and 698 deletions
60
scripts/test_gh.go
Normal file
60
scripts/test_gh.go
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
|
||||
mmap "github.com/edsrzf/mmap-go"
|
||||
)
|
||||
|
||||
var pressureLevels = []float64{
|
||||
1000, 975, 950, 925, 900, 875, 850, 825, 800, 775,
|
||||
750, 725, 700, 675, 650, 625, 600, 575, 550, 525,
|
||||
500, 475, 450, 425, 400, 375, 350, 325, 300, 275,
|
||||
250, 225, 200, 175, 150, 125, 100, 70, 50, 30,
|
||||
20, 10, 7, 5, 3, 2, 1,
|
||||
}
|
||||
|
||||
func main() {
|
||||
f, _ := os.Open("C:/tmp/grib/20260212_12.cube")
|
||||
mm, _ := mmap.Map(f, mmap.RDONLY, 0)
|
||||
defer mm.Unmap()
|
||||
defer f.Close()
|
||||
|
||||
const (
|
||||
nT = 97
|
||||
nP = 47
|
||||
nLat = 721
|
||||
nLon = 1440
|
||||
)
|
||||
bytesPerVar := int64(nT * nP * nLat * nLon * 4)
|
||||
|
||||
val := func(varIdx, ti, pi, y, x int) float32 {
|
||||
idx := (((ti*nP + pi) * nLat) + y) * nLon + x
|
||||
off := int64(varIdx)*bytesPerVar + int64(idx)*4
|
||||
bits := binary.LittleEndian.Uint32(mm[off : off+4])
|
||||
return math.Float32frombits(bits)
|
||||
}
|
||||
|
||||
// Check gh values at lat=52.2N (y=(90-52.2)*4=151.2 → y=151), lon=0.1E (x=0.1*4=0.4 → x=0)
|
||||
// Time step 9 (9 hours into forecast)
|
||||
ti := 9
|
||||
y := 151
|
||||
x := 0
|
||||
|
||||
fmt.Println("GH values at (52.25N, 0E), t=+9h:")
|
||||
fmt.Printf("%8s %8s %10s\n", "Level", "hPa", "GH(m)")
|
||||
for pi := 0; pi < nP; pi++ {
|
||||
gh := val(0, ti, pi, y, x)
|
||||
fmt.Printf("%8d %8.0f %10.1f\n", pi, pressureLevels[pi], gh)
|
||||
}
|
||||
|
||||
fmt.Println("\nU-wind values at same point:")
|
||||
fmt.Printf("%8s %8s %10s\n", "Level", "hPa", "U(m/s)")
|
||||
for pi := 0; pi < nP; pi++ {
|
||||
u := val(1, ti, pi, y, x)
|
||||
fmt.Printf("%8d %8.0f %10.2f\n", pi, pressureLevels[pi], u)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue