计算分辨率

This commit is contained in:
nuknal
2024-06-07 13:03:01 +08:00
parent cf5012f2a8
commit c046da2321
6 changed files with 240 additions and 105 deletions

View File

@@ -38,8 +38,8 @@ func (s *Scene) Cleanup() {
// MSS 2336 * 2336 - 1764
// PAN 9344 * 9344 - 7056
func (r *Registrator) SubScenes() (panScenes []*Scene, mssScenes []*Scene, err error) {
hPAN := (7056 - 1764)
hPANOverlap := 1764
hPAN := (9344 - 2336)
hPANOverlap := 2336
panScenesCnt := r.PanHeight / hPAN
for i := 0; i < panScenesCnt; i++ {
@@ -110,12 +110,13 @@ func (r *Registrator) SaveScenesToTiff(panScenes []*Scene, mssScenes []*Scene) e
filename := fmt.Sprintf("%s_L1A.tiff", scene.SceneId)
scene.Tiff = filepath.Join(dir, filename)
scene.Meta = r.makeProductMeta(scene)
r.ScenePosition(scene)
r.SetSceneBoundary(scene)
err := savePanToGDALGTiff(scene.Mat[0],
scene.Meta.Corners.UpperLeft.Longitude,
scene.Meta.Corners.UpperLeft.Latitude,
scene.Tiff)
scene.Tiff,
scene.Meta.Gsd)
if err != nil {
log.Errorf("save pan scene %d to tiff failed: %v", i+1, err)
return err
@@ -147,7 +148,7 @@ func (r *Registrator) SaveScenesToTiff(panScenes []*Scene, mssScenes []*Scene) e
data, _ := json.Marshal(fc)
// 输出 GeoJSON 数据
fmt.Println(string(data))
log.Debug(string(data))
for i, scene := range mssScenes {
dir := filepath.Join(r.Params.OutputDir, fmt.Sprintf("%03d", i+1), "MSS")
@@ -156,14 +157,14 @@ func (r *Registrator) SaveScenesToTiff(panScenes []*Scene, mssScenes []*Scene) e
filename := fmt.Sprintf("%s_L1A.tiff", scene.SceneId)
scene.Tiff = filepath.Join(dir, filename)
scene.Meta = r.makeProductMeta(scene)
r.ScenePosition(scene)
r.SetSceneBoundary(scene)
rgbirImage, _ := r.MergeMSSToBGRNIR(scene.Mat)
err := SaveBGRToGDALGTiff(rgbirImage,
4,
scene.Meta.Corners.UpperLeft.Longitude,
scene.Meta.Corners.UpperLeft.Latitude,
MssResolution,
scene.Meta.Gsd,
[]godal.ColorInterp{godal.CIBlue, godal.CIGreen, godal.CIRed, godal.CIUndefined},
scene.Tiff)
if err != nil {