package main import ( "os" "path/filepath" "strings" "github.com/airbusgeo/godal" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" producer "starwiz.cn/sjy01/image-proc/producer" ) var ( params producer.Params ) var procCmd = &cobra.Command{ Use: "proc", Short: "process images", Long: `process images`, Run: func(cmd *cobra.Command, args []string) { reg := producer.NewRegistrator(producer.DownSampled) reg.Params = params reg.Params.MssTiffFile = filepath.Join(params.OutputDir, strings.TrimSuffix(filepath.Base(params.MssRawFile), filepath.Ext(params.MssRawFile))+".tiff") reg.Params.PanTiffFile = filepath.Join(params.OutputDir, strings.TrimSuffix(filepath.Base(params.PanRawFile), filepath.Ext(params.PanRawFile))+".tiff") reg.Params.FusTIffFile = strings.Replace(reg.Params.MssTiffFile, ".tiff", "_FUS.tiff", 1) if err := reg.LoadMssRaw(); err != nil { panic(err) } if err := reg.LoadPanRaw(); err != nil { panic(err) } godal.RegisterAll() os.MkdirAll(params.OutputDir, 0755) if err := reg.DoPhaseCorrelation(); err != nil { panic(err) } reg.DoCoRegestration() if params.SaveRegisteredMssRaw { registerdMSSRAW := filepath.Join( params.OutputDir, strings.TrimSuffix(filepath.Base(params.MssRawFile), filepath.Ext(params.MssRawFile))+"_registered.RAW", ) reg.SaveRegisteredMssToRaw(registerdMSSRAW) } panScenes, mssScenes, err := reg.SubScenes() if err != nil { log.Error(err) } reg.SaveScenesToTiff(panScenes, mssScenes) reg.SaveOriginalPanToGDALGTiff(reg.Params.PanTiffFile) reg.SaveRegisteredMssToGDALGTiff(reg.Params.MssTiffFile) if params.PansharpenIHS { reg.DoScenePansharpen(panScenes, mssScenes) } reg.Clean() }, } func init() { rootCmd.AddCommand(procCmd) procCmd.Flags().StringVarP(¶ms.PanRawFile, "pan", "p", "pan.raw", "PAN image raw file path") procCmd.Flags().StringVarP(¶ms.MssRawFile, "mss", "m", "mss.raw", "MSS image raw file path") procCmd.Flags().StringVarP(¶ms.AuxRawFile, "aux", "a", "pms.aux", "AUX image raw file path") procCmd.Flags().BoolVarP(¶ms.SaveRegisteredMssRaw, "srmss", "s", false, "save registered MSS image raw file") procCmd.Flags().BoolVarP(¶ms.PansharpenIHS, "fus", "", false, "pansharpen using IHS") procCmd.Flags().StringVarP(¶ms.OutputDir, "output-dir", "o", "data", "output directory") procCmd.Flags().BoolVarP(¶ms.SubScenes, "sub-scenes", "", false, "process sub-scenes") }