Files

66 lines
1.3 KiB
Go

package extract
import (
"os"
log "github.com/sirupsen/logrus"
"github.com/xuri/excelize/v2"
)
// 卫星时间起点 北京时间 2000-01-01 20:00:00
var (
ReferenceTime2000 = 946728000
)
func (e *Extractor) ExtractAux(auxfile, xlsxfile string) ([]*AuxFrameHead, []*AuxFocalBox, []*AuxPlatform, error) {
log.Println("extract aux data from", auxfile, "to", xlsxfile)
os.Remove(xlsxfile)
if err := createAuxXlsx(xlsxfile); err != nil {
return nil, nil, nil, err
}
f, err := excelize.OpenFile(xlsxfile)
if err != nil {
return nil, nil, nil, err
}
defer f.Close()
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
row := 2
col := 1
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])
l0, _ := head.SaveXlsx(f, col, row)
afh = append(afh, &head)
var box AuxFocalBox
box.Decode(data[i+24 : i+24+128])
l1, _ := box.SaveXlsx(f, col+l0, row)
afb = append(afb, &box)
var plat AuxPlatform
plat.Decode(data[i+24+128 : i+24+128+512])
plat.SaveXlsx(f, col+l0+l1, row)
aps = append(aps, &plat)
row++
}
err = f.Save()
return afh, afb, aps, err
}