AttributeError:“浮动”对象没有属性“ GCPPixel”

问题描述

我是编码的新手,并尝试使用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方法,因此会出现错误。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...