问题描述
我是编码的新手,并尝试使用gdal库和qgis python控制台将SEVIRI本机图像转换为tif格式。 问题是,当我想添加GCP时出现错误,并且我不知道如何解决该问题,我知道我以错误的方式添加了GCP,但我不知道什么是正确的方法! 我进行了大量搜索,但在使用gdaltranslate时未找到有关在qgis python控制台中添加GCP的任何信息。任何建议都会有所帮助。 这是我在qgis python控制台中的代码:
import gdal
src='E:/data/MSG1-SEVI-MSG15-0100-NA-20190331061240.466000000Z-20190331061258-1408742.nat'
dst='E:/data/trans.tif'
ds=gdal.Open(src)
gdal.Translate(dst,ds,format='GTiff',outputType=gdal.GDT_UInt16,Gcps=(3227050.38610344,1303713.87878049,50.2665350843959,29.244462081302))
error is
Traceback (most recent call last):
File "C:\PROGRA~1\QGIS3~1.14\apps\python37\lib\code.py",line 90,in runcode
exec(code,self.locals)
File "<input>",line 1,in <module>
File "<string>",line 6,in <module>
File "C:\PROGRA~1\QGIS3~1.14\apps\python37\lib\site-packages\osgeo\gdal.py",line 422,in Translate
(opts,callback,callback_data) = TranslateOptions(**kwargs)
File "C:\PROGRA~1\QGIS3~1.14\apps\python37\lib\site-packages\osgeo\gdal.py",line 376,in TranslateOptions
new_options += ['-gcp',_strHighPrec(gcp.GCPPixel),_strHighPrec(gcp.GCPLine),_strHighPrec(gcp.GCPX),str(gcp.Gcpy),_strHighPrec(gcp.GCPZ)]
AttributeError: 'float' object has no attribute 'GCPPixel'
解决方法
您的问题是您作为GCPs
参数传递给gDal.Translate
函数的问题。当该参数期望的是gdal.GCP()
对象的列表时,您正在传递浮点值的列表(元组)。
因为库认为它有gdal.GCP()
个对象,所以它试图在其中一个对象上调用GCPPixel
方法,如果那样就可以了。但这是一个浮点数,当然,浮点数没有GCPPixel
方法,因此会出现错误。