package main import ( "os" "path/filepath" "strings" "github.com/airbusgeo/godal" "github.com/sirupsen/logrus" "github.com/spf13/cobra" producer "starwiz.cn/sjy01/image-proc/producer" ) var ( params producer.Params saveStrip bool ) 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 { logrus.Error(err) } reg.SaveScenesToTiff(panScenes, mssScenes) if saveStrip { 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") procCmd.Flags().BoolVarP(&saveStrip, "save-strip", "", false, "save original and registered images as GDAL GTiff") }