暂时使用星下点坐标作为图像左上角坐标
This commit is contained in:
@@ -1,29 +1,47 @@
|
||||
package imageproc
|
||||
|
||||
import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/airbusgeo/godal"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"starwiz.cn/sjy01/image-proc/pkg/calculator"
|
||||
)
|
||||
|
||||
func setGeoTransform(ds *godal.Dataset, topLeftX, topLeftY, width, height, resolution float64) {
|
||||
func setGeoTransform(ds *godal.Dataset, topLeftLng, topLeftLat, resolution float64) {
|
||||
// 转换分辨率(米到度)
|
||||
resLat := resolution / calculator.MetersPerDegreeLatitude
|
||||
resLng := calculator.MetersToDegreesLongitude(resolution, topLeftLat)
|
||||
// 设置地理变换(假设左上角坐标为(0,0),PAN每个像素分辨率为1.2米)
|
||||
geotransform := [6]float64{
|
||||
0, // top left x
|
||||
resolution, // w-e pixel resolution
|
||||
0, // rotation, 0 if image is "north up"
|
||||
0, // top left y
|
||||
0, // rotation, 0 if image is "north up"
|
||||
-resolution, // n-s pixel resolution (negative value)
|
||||
topLeftLng, // top left x
|
||||
resLng, // w-e pixel resolution
|
||||
0, // rotation, 0 if image is "north up"
|
||||
topLeftLat, // top left y
|
||||
0, // rotation, 0 if image is "north up"
|
||||
-resLat, // n-s pixel resolution (negative value)
|
||||
}
|
||||
err := ds.SetGeoTransform(geotransform)
|
||||
if err != nil {
|
||||
log.Errorf("Failed to set GeoTransform: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 设置投影信息(WGS84)
|
||||
err = ds.SetProjection(calculateProj(topLeftX, topLeftY, width, height, resolution))
|
||||
// 设置投影为 WGS84
|
||||
srs, err := godal.NewSpatialRefFromEPSG(4326) // gdal.CreateSpatialReference("")
|
||||
if err != nil {
|
||||
log.Errorf("Failed to set spatial reference: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
projWKT, err := srs.WKT()
|
||||
if err != nil {
|
||||
log.Errorf("Failed to convert spatial reference to WKT: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = ds.SetProjection(projWKT)
|
||||
if err != nil {
|
||||
log.Errorf("Failed to set projection: %v", err)
|
||||
}
|
||||
@@ -32,3 +50,12 @@ func setGeoTransform(ds *godal.Dataset, topLeftX, topLeftY, width, height, resol
|
||||
ds.SetMetadata("TIFFTAG_DATETIME", time.Now().String())
|
||||
ds.SetMetadata("TIFFTAG_SOFTWARE", "StarWiz-SJY01-IMAGE-PROC")
|
||||
}
|
||||
|
||||
func sizeOfFile(file string) int64 {
|
||||
fileInfo, err := os.Stat(file)
|
||||
if err != nil {
|
||||
log.Errorf("Failed to get file size: %v", err)
|
||||
return 0
|
||||
}
|
||||
return fileInfo.Size()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user