Files
sjy01-preprocessing/cmd/extract.go
2024-05-22 11:31:08 +08:00

103 lines
2.3 KiB
Go

package cmd
import (
"fmt"
"github.com/k0kubun/pp/v3"
"github.com/spf13/cobra"
"starwiz.cn/sjy01/preprocessing/extract"
)
var (
dataId string
batch bool
output string
paramsXML string
)
var extractCmd = &cobra.Command{
Use: "extract",
Short: "Extract data from raw data files",
Long: `Extract data from raw data files`,
Run: func(cmd *cobra.Command, args []string) {
if paramsXML != "" {
params, err := extract.LoadL0Params(paramsXML)
if err != nil {
panic(err)
}
pp.Println(params)
e := extract.NewExtractor(params)
aos, _ := e.ExtractAosData()
dats, _ := e.ExtractOriginalImageData(aos)
for i, d := range dats {
e.SeprateAuxAndImgData(d, i)
}
if err := e.Report(); err != nil {
panic(err)
}
e.Cleanup()
return
}
if batch {
ps := params()
for _, p := range ps {
e := extract.NewExtractor(p)
aos, _ := e.ExtractAosData()
dats, _ := e.ExtractOriginalImageData(aos)
for i, d := range dats {
e.SeprateAuxAndImgData(d, i)
}
e.Cleanup()
}
} else {
p := &extract.Params{
InputData: fmt.Sprintf("demo/data/%s.dat", dataId),
OutputPath: fmt.Sprintf("%s/%s", output, dataId),
TempPath: fmt.Sprintf("demo/temp/%s", dataId),
DataId: dataId,
Satellite: "SJY01",
}
e := extract.NewExtractor(p)
aos, _ := e.ExtractAosData()
dats, _ := e.ExtractOriginalImageData(aos)
for i, d := range dats {
e.SeprateAuxAndImgData(d, i)
}
e.Cleanup()
}
},
}
func init() {
rootCmd.AddCommand(extractCmd)
extractCmd.Flags().StringVarP(&dataId, "data-id", "d", "051622", "051622")
extractCmd.Flags().BoolVarP(&batch, "batch", "b", false, "true | false")
extractCmd.Flags().StringVarP(&output, "out", "o", "demo/output", "demo/output")
extractCmd.Flags().StringVarP(&paramsXML, "params", "x", "", "parameters file path")
}
func params() []*extract.Params {
var params []*extract.Params
datas := []string{"051622", "051712", "051721",
"051814", "051821", "051823",
"051921", "051922", "052022"}
for _, d := range datas {
params = append(params, &extract.Params{
InputData: fmt.Sprintf("demo/data/%s.dat", d),
OutputPath: fmt.Sprintf("%s/%s", output, d),
TempPath: fmt.Sprintf("demo/temp/%s", d),
DataId: d,
Satellite: "SJY01",
})
}
return params
}