For循环类型错误:“字典”对象不可调用

时间:2019-08-13 11:43:11

标签: python dictionary for-loop google-earth-engine

我正在尝试在Python中建立一个for循环,该循环会将图像从Google Earth Engine导出到我的Google Drive中。每个图像的边界框坐标取自称为DHS的数据框。

我已使用以下代码成功导出了单个图像:

landsat = ee.Image('ESA/GLOBCOVER_L4_200901_200912_V2_3')

geometry = [[DHS.loc[1,'lon.min'], DHS.loc[1,'lat.min']], 
            [DHS.loc[1,'lon.min'], DHS.loc[1,'lat.max']],
            [DHS.loc[1,'lon.max'], DHS.loc[1,'lat.max']],
            [DHS.loc[1,'lon.max'], DHS.loc[1,'lat.min']]]

File_Name = str(DHS.loc[1,'Survey Year']) + "_" + str(DHS.loc[1,'Cluster Number'])

task_config = { 
    'folder': 'Earth Engine Data',
    'region': geometry
    }

task = ee.batch.Export.image(landsat, File_Name, task_config)

task.start()

但是,当我尝试将此代码放入for循环中时,出现以下错误:

landsat = ee.Image('ESA/GLOBCOVER_L4_200901_200912_V2_3')

for row in range(0,1):

    geometry = [[DHS.loc[row,'lon.min'], DHS.loc[row,'lat.min']],
                [DHS.loc[row,'lon.min'], DHS.loc[row,'lat.max']],
                [DHS.loc[row,'lon.max'], DHS.loc[row,'lat.max']],
                [DHS.loc[row,'lon.max'], DHS.loc[row,'lat.min']]]

    File_Name = str(DHS.loc[row,'Survey Year']) + "_" + str(DHS.loc[row,'Cluster Number'])

    task_config = {
        'folder': 'Earth Engine Data',
        'region': geometry
        }

    task = ee.batch.Export.image(landsat, File_Name, task_config)

    task.start()

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-144-164162d7da6c> in <module>
      1 landsat = ee.Image('ESA/GLOBCOVER_L4_200901_200912_V2_3')
      2 
----> 3 for row in range(0,1):
      4 
      5     geometry = [[DHS.loc[row,'lon.min'], DHS.loc[row,'lat.min']],

TypeError: 'Dictionary' object is not callable

有人知道这是为什么吗?

1 个答案:

答案 0 :(得分:2)

您已经用字典替换了内置range

它必须发生在您未发布的部分代码中。

您可以轻松重现此内容:

print(range) # <class 'range'>
range = {}
print(type(range)) # <class 'dict'>
for i in range(5): # TypeError: 'dict' object is not callable
    pass

下次,请发布一个独立的最小,完整且可验证的示例,其中包含重现该问题所需的所有代码。