86 lines
2.6 KiB
Go
86 lines
2.6 KiB
Go
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/pkg/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")
|
|
}
|