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) } 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(¶msXML, "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 }