diff --git a/pkg/fusion/fusion.go b/pkg/fusion/fusion.go index b67626d..9d8f2f9 100644 --- a/pkg/fusion/fusion.go +++ b/pkg/fusion/fusion.go @@ -68,11 +68,13 @@ func Pansharpen(panTif, mssTif, fusTif string, method PansharpenMethod) error { fus.ConvertTo(&fus, mt) var colorInterps []godal.ColorInterp - if config.GCONFIG.CoRegistration.FUSBandOrder == "RGB" { + if config.GCONFIG.CoRegistration.FUSBandOrder == "RGB" || + config.GCONFIG.CoRegistration.FUSBandOrder == "RGBI" { colorInterps = []godal.ColorInterp{godal.CIRed, godal.CIGreen, godal.CIBlue, godal.CIUndefined} } else { colorInterps = []godal.ColorInterp{godal.CIBlue, godal.CIGreen, godal.CIRed, godal.CIUndefined} } + err = utils.SaveBGRToGDALGTiff(fus, fus.Channels(), 0, 0, 1.3, colorInterps, fusTif) for i := 0; i < len(BGRI); i++ { @@ -113,10 +115,17 @@ func PansharpenESRI(pan, B, G, R, I gocv.Mat) gocv.Mat { gocv.Add(I, ADJ, &I) mss := gocv.NewMat() - if config.GCONFIG.CoRegistration.FUSBandOrder == "RGB" { + switch config.GCONFIG.CoRegistration.FUSBandOrder { + case "RGB": gocv.Merge([]gocv.Mat{R, G, B}, &mss) - } else { + case "BGR": gocv.Merge([]gocv.Mat{B, G, R}, &mss) + case "RGBI": + gocv.Merge([]gocv.Mat{R, G, B, I}, &mss) + case "BGRI": + gocv.Merge([]gocv.Mat{B, G, R, I}, &mss) + default: + gocv.Merge([]gocv.Mat{R, G, B}, &mss) } return mss