Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:';浮动';对象没有属性';GCPPixel';_Python_Gdal_Qgis_Pyqgis - Fatal编程技术网

Python 属性错误:';浮动';对象没有属性';GCPPixel';

Python 属性错误:';浮动';对象没有属性';GCPPixel';,python,gdal,qgis,pyqgis,Python,Gdal,Qgis,Pyqgis,我在编码方面是新手,并尝试使用gdal库和qgis python控制台将SEVIRI原生图像转换为tif格式。 问题是,当我想添加GCP时,我遇到了一个错误,我不知道如何解决这个问题。我知道我添加GCP的方式错误,但我不知道正确的方法是什么! 我搜索了很多,但没有找到任何关于在qgis python控制台中使用gdaltranslate时添加GCP的信息。任何建议都会有帮助。 以下是我在qgis python控制台中的代码: import gdal src='E:/data/MSG1-SEVI-

我在编码方面是新手,并尝试使用gdal库和qgis python控制台将SEVIRI原生图像转换为tif格式。 问题是,当我想添加GCP时,我遇到了一个错误,我不知道如何解决这个问题。我知道我添加GCP的方式错误,但我不知道正确的方法是什么! 我搜索了很多,但没有找到任何关于在qgis python控制台中使用gdaltranslate时添加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'
导入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.38610344130713.87878049,50.2665350843959,29.244462081302))
错误是
回溯(最近一次呼叫最后一次):
文件“C:\PROGRA~1\QGIS3~1.14\apps\Python37\lib\code.py”,第90行,运行代码
exec(代码,self.locals)
文件“”,第1行,在
文件“”,第6行,在
文件“C:\PROGRA~1\QGIS3~1.14\apps\Python37\lib\site packages\osgeo\gdal.py”,第422行,翻译
(选项、回调、回调_数据)=翻译选项(**kwargs)
文件“C:\PROGRA~1\QGIS3~1.14\apps\Python37\lib\site packages\osgeo\gdal.py”,第376行,在TranslateOptions中
新选项+=['-gcp',[u strHighPrec(gcp.GCPPixel),[u strHighPrec(gcp.GCPLine),[u strHighPrec(gcp.GCPX),str(gcp.GCPY),[u strHighPrec(gcp.GCPZ)]
AttributeError:“float”对象没有属性“GCPPixel”

您的问题是将
GCPs
参数传递给
gDal.Translate
函数的内容。您正在传递一个浮点值列表(元组),而该参数需要的是
gdal.GCP()
对象列表


因为库认为它有
gdal.GCP()
对象,所以它试图在其中一个对象上调用
GCPPixel
方法,如果是这样的话,该方法会起作用。但是它是一个浮点数,当然,浮点数没有
GCPPixel
方法,因此会出现错误。

您的问题是将
GCPs
参数传递给
gDal.Translate
函数。您正在传递一个浮点值列表(元组),而该参数需要的是
gdal.GCP()
对象列表


因为库认为它有
gdal.GCP()
对象,所以它试图在其中一个对象上调用
GCPPixel
方法,如果是这样的话,该方法会起作用。但是它是一个浮点数,当然,浮点数没有一个
GCPPixel
方法,因此会出现错误。

首先,我要感谢你回答我的问题。你完全正确,我不知道如何在qgis python控制台中创建这样的GCP对象。你知道我在哪里可以找到更多关于这方面的信息吗?非常感谢你的帮助我使用了gdal.GCP(),它很管用!。但还有一个大问题,那就是当我添加超过5个gcp时,我的数据集将丢失!我会把这个问题作为一个新的问题加上你已经感谢我两次了,但是没有给我任何官方的信任,哈哈!我真的不在乎。我真的只是来帮忙的。首先,我要感谢你回答我的问题。你完全正确,我不知道如何在qgis python控制台中创建这样的GCP对象。你知道我在哪里可以找到更多关于这方面的信息吗?非常感谢你的帮助我使用了gdal.GCP(),它很管用!。但还有一个大问题,那就是当我添加超过5个gcp时,我的数据集将丢失!我会把这个问题作为一个新的问题加上你已经感谢我两次了,但是没有给我任何官方的信任,哈哈!我真的不在乎。我真的只是来帮忙的。