Files
sjy01-image-proc/pkg/auxilary/aux.go
nuknal 2fcbc389c6 4*4*5
2024-09-10 14:13:30 +08:00

54 lines
1.2 KiB
Go

package auxilary
import (
"os"
log "github.com/sirupsen/logrus"
)
// 卫星时间起点 北京时间 2000-01-01 20:00:00
var (
ReferenceTime2000 = 946728000
)
func ExtractAux(auxfile string) ([]*AuxFrameHead, []*AuxFocalBox, []*AuxPlatform, error) {
data, err := os.ReadFile(auxfile)
if err != nil {
log.Println("read aux data from", auxfile, "error:", err.Error())
return nil, nil, nil, err
}
var afh []*AuxFrameHead
var afb []*AuxFocalBox
var aps []*AuxPlatform
for i := 0; i < len(data); i += 24 + 128 + 512 {
if i+24+128+512 > len(data) {
break
}
var head AuxFrameHead
head.Decode(data[i : i+24])
afh = append(afh, &head)
var box AuxFocalBox
box.Decode(data[i+24 : i+24+128])
afb = append(afb, &box)
var plat AuxPlatform
plat.Decode(data[i+24+128 : i+24+128+512])
aps = append(aps, &plat)
}
log.Printf("extract %d aux frame heads, %d aux focal boxes, %d aux platforms from %s",
len(afh), len(afb), len(aps), auxfile)
return afh, afb, aps, err
}
// 长光卫星姿态和GPS数据更新频率为 4 次/秒
func transfromGPSandAttMicrosec(microsec uint32) uint32 {
unit := uint32(250000)
microsec = (microsec / unit) * unit
return microsec
}