使用gdalwarp重新采样导致IndentationError:意外缩进

问题描述 投票:2回答:1

我使用Sentinel2图像,我正在尝试重新采样它们。

我尝试了以下代码:

import os, fnmatch

INPUT_FOLDER = "/d/afavro/Bureau/test_resampling/original"
OUTPUT_FOLDER = "/d/afavro/Bureau/test_resampling/resampling_10m"

    def findRasters (path, filter):
        for root, dirs, files in os.walk(path):
            for file in fnmatch.filter(files, filter):
                yield file

    for raster in findRasters(INPUT_FOLDER,'*.tif'):
        print(raster)
        inRaster = INPUT_FOLDER + '/' + raster
        print(inRaster)
        outRaster = OUTPUT_FOLDER + '/resample' + raster
        print (outRaster)
        cmd = "gdalwarp -tr 10 10 -r cubic " % (inRaster,outRaster)
        os.system(cmd)

但我仍然得到相同的错误消息:

def findRasters (path, filter): ^
IndentationError: unexpected indent

我已经尝试了相同类型的代码来制作一个子集并且它有效。我不明白我的错误来自哪里。

python bash resampling sentinel2
1个回答
1
投票

应该从字面上理解错误类型IndentationError:你的缩进似乎是错误的。你的路线

def findRasters (path, filter):

过于缩进,但需要与前一行处于相同的缩进级别

OUTPUT_FOLDER = "/d/afavro/Bureau/test_resampling/resampling_10m"

您提供的完整代码示例应如下所示:

import os, fnmatch

INPUT_FOLDER = "/d/afavro/Bureau/test_resampling/original"
OUTPUT_FOLDER = "/d/afavro/Bureau/test_resampling/resampling_10m"

def findRasters (path, filter):
    for root, dirs, files in os.walk(path):
        for file in fnmatch.filter(files, filter):
            yield file

for raster in findRasters(INPUT_FOLDER,'*.tif'):
    print(raster)
    inRaster = INPUT_FOLDER + '/' + raster
    print(inRaster)
    outRaster = OUTPUT_FOLDER + '/resample' + raster
    print (outRaster)
    cmd = "gdalwarp -tr 10 10 -r cubic " % (inRaster,outRaster)
    os.system(cmd)

另外,正如您在附加评论中写的那样,您的行

cmd = "gdalwarp -tr 10 10 -r cubic " % (inRaster,outRaster)

似乎是错误的,因为inRasteroutRaster不会在字符串中使用。使用String formatting代替:

cmd = 'gdalwarp -tr 10 10 -r cubic "{}" "{}"'.format(inRaster, outRaster)
© www.soinside.com 2019 - 2024. All rights reserved.