本文介绍如何利用Python语言结合已知研究区域中的全部遥感影像的分幅条带号,从大量的遥感影像文件中筛选出落在该研究区域的影像文件。
首先,我们明确需要实现的需求。我们已知一个研究区域(四川省),并且知道覆盖该区域所需的全部遥感影像的分幅条带号(以Sentinel-2数据的分幅规则为例)。我们首先需要从这些遥感影像中筛选出位于该研究区域内的影像文件。
我们已经下载了大量的遥感影像,这些影像包括在研究区域内和外的影像。所有这些遥感影像都保存在一个大文件夹下,并且该大文件夹中还包含多个子文件夹,具体的遥感影像则存在于这些子文件夹中。
此外,每个遥感影像文件的文件名中都包含分幅条带号这一字段。我们的目标是基于研究区域内遥感影像的分幅条带号,在大量的遥感影像中筛选出这些分幅对应的遥感影像文件,并将其通过复制的方式放入一个新的结果文件夹中。
了解了具体需求,我们就可以开始编写代码。下面是这篇文章所需的完整代码:
(代码部分)
其中,我们需要导入os、xlrd和shutil等Python库,分别用于系统文件遍历、Excel数据读取以及研究区域内遥感影像数据的复制。我们首先需要将表示遥感影像数据分幅条带号的矢量文件的属性表导出并保存为.xls格式的表格文件,以便后期代码对数据进行读取。
在代码中,xls_file表示我们导出的.xls格式表格文件,tif_path表示存放所有遥感影像的大文件夹,result_path表示希望将筛选出的遥感影像文件复制到的路径。
接下来,我们通过xlrd.open_workbook()函数打开.xls格式的表格文件,读取其中的数据并获取其行数row_num。然后,我们对表格文件的单元格数据进行遍历,依次获取所需的遥感影像分幅条带号。
接下来,我们通过对遍历得到的子文件夹中每一个遥感影像文件进行处理,找到所有满足分幅条带号的遥感影像文件,并将其复制到目标文件夹中。
由于我们保存的是多时相遥感影像数据,我们希望在目标文件夹中使用各个分幅条带号作为名称创建多个子文件夹,并将对应的全部遥感影像数据放入这些文件夹。最终,我们可以通过代码实现这一需求。
运行上述代码后,我们得到的结果如下图所示。每个子文件夹表示一个分幅条带号,子文件夹内包含该分幅条带号对应的全部时相的遥感影像文件。