Python arcpy创建栅格、批量拼接栅格

python,arcpy,创建,栅格,批量,拼接 · 浏览次数 : 320

小编点评

**脚本说明:** 本脚本介绍基于Python语言 arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作。 **步骤:** 1. **导入所需库:** ``` import arcpyfile_path="G:/Postgraduate/LAI_Glass_RTlab/A2018161_Dif/DRT/\"out_file_path=\"G:/Postgraduate/LAI_Glass_RTlab/A2018161_Dif/DRT/\"out_file_name=\"Global.tif\"file_name_list=os.listdir(file_path)tif_file_path=file_path+file_name_list[0]cell_size_x=arcpy.GetRasterProperties_management(tif_file_path,\"CELLSIZEX\")cell_size=cell_size_x.getOutput(0)value_type=arcpy.GetRasterProperties_management(tif_file_path,\"VALUETYPE\")describe=arcpy.Describe(tif_file_path)spatial_reference=describe.spatialReferencearcpy.CreateRasterDataset_management(out_file_path,out_file_name,cell_size,\"16_BIT_SIGNED\", spatial_reference,\"1\) ``` 2. **创建新栅格图层:** ``` out_file=out_file_path+out_file_namefor file in file_name_list: file_path_name=file_path+file print(file_path_name) arcpy.Mosaic_management([file_path_name],out_file) ``` **注意:** * `file_path_name`:存储每个栅格数据的文件路径。 * `out_file`:拼接后所得结果栅格图层的文件名。 * `out_file_name`:拼接后所得结果栅格图层的实际文件名。 * `cell_size_x`:栅格图像的像素边长。 **运行说明:** 1. 将脚本中的 `file_path`路径替换为存放遥感影像的路径。 2. 运行脚本。 3. 拼接后,将结果保存为一个新栅格图层。

正文

  本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接Mosaic)的操作。

  首先,相关操作所需具体代码如下:

import os
import arcpy

file_path="G:/Postgraduate/LAI_Glass_RTlab/A2018161_Dif/DRT/"
out_file_path="G:/Postgraduate/LAI_Glass_RTlab/A2018161_Dif/DRT/"
out_file_name="Global.tif"

file_name_list=os.listdir(file_path)

tif_file_path=file_path+file_name_list[0]
cell_size_x=arcpy.GetRasterProperties_management(tif_file_path,"CELLSIZEX")
cell_size=cell_size_x.getOutput(0)
value_type=arcpy.GetRasterProperties_management(tif_file_path,"VALUETYPE")
describe=arcpy.Describe(tif_file_path)
spatial_reference=describe.spatialReference

arcpy.CreateRasterDataset_management(out_file_path,out_file_name,cell_size,"16_BIT_SIGNED",
                                     spatial_reference,"1")

out_file=out_file_path+out_file_name
for file in file_name_list:
    file_path_name=file_path+file
    print(file_path_name)
    arcpy.Mosaic_management([file_path_name],out_file)

  其中,file_path为存放有多景初始遥感影像的路径格式为.tif栅格文件(如果不是.tif格式,例如是.hdf等文件,需首先进行文件格式的转换);out_file_path为拼接后所得结果栅格图层的存放路径;out_file_name为拼接后所得结果栅格图层的文件名称,其可选格式有很多,如下图所示。

  在这里,我们默认所得拼接结果图层为一个(也就是file_path文件夹中全部的待处理遥感影像最终全拼接在一起);如果大家需要使得拼接结果图层是多幅(也就是file_path文件夹中待处理遥感影像依据区域、时间等分为很多不同的部分,每一部分拼接在一起),可以参考Python GDAL读取栅格数据并基于质量评估波段QA对指定数据加以筛选掩膜,利用其中的循环方式实现需求。

  随后,通过os.listdir()函数获取file_path路径下的栅格文件,并存储于file_name_list列表中。

  接下来需要创建一个新的栅格图层。之所以要进行这一步骤,是因为本文后期选择用arcpy.Mosaic_management()函数进行栅格的批量拼接,因此需要首先创建一个新的、空的栅格图层作为拼接的基准。如果大家的需求不是批量拼接栅格数据,而是单纯想利用arcpy进行新栅格的创建,那就只看这一部分的代码即可。

  在这里,我们选择用file_path路径下的第一个栅格数据(下称“第一栅格”)作为新栅格图层中各项属性(例如像素边长、像素数据格式等)的依据。首先,arcpy.GetRasterProperties_management()函数获取第一栅格的像素x边边长;因为一般栅格数据中像素都是正方形,因此我们就通过cell_size=cell_size_x.getOutput(0)将第一栅格的像素x边边长作为新栅格图层像素x边与y边二者的边长。再利用arcpy.GetRasterProperties_management()函数获取第一栅格的数据格式;最后利用中间变量describe获取第一栅格的空间参考信息。

  完成以上步骤后,将已获取的第一栅格的各类信息通过函数arcpy.CreateRasterDataset_management()带入新栅格中。在这里需要注意:尽可能在将要拼接时选择新栅格"16_BIT_SIGNED"及以下的数据格式(具体数据格式类别如下图),且将file_path路径下待拼接的栅格数据的数据格式也全部修改为这一格式;否则可能会由于数据量大而导致拼接过程极慢。我之前就是由于选用了32 bit float格式的栅格数据进行拼接,导致全球范围的MODIS一个植被产品数据拼接花了将近一天的时间。如果大家的栅格像素数据包含小数,可以通过乘上一个缩放系数的方式进行数据整数化。

  代码最后的一个for循环,就是遍历file_name_list中的各个栅格数据,并通过arcpy.Mosaic_management()函数加以拼接即可。

  以上,便完成了本次批量拼接的操作。这里还有一点需要注意:由于arcpy模块的限制,如果大家的Python版本是3.0及以上,往往不能直接运行上述代码,最好是在ArcMap的Python运行框或其对应IDLE(如下图所示)中运行。

  至此,大功告成。

与Python arcpy创建栅格、批量拼接栅格相似的内容:

Python arcpy创建栅格、批量拼接栅格

本文介绍基于Python语言arcpy模块,实现栅格影像图层建立与多幅遥感影像数据批量拼接(Mosaic)的操作~

Python ArcPy批量拼接长时间序列栅格图像

本文介绍基于Python中ArcPy模块,对大量不同时相的栅格遥感影像按照其成像时间依次执行批量拼接的方法~

Python ArcPy批量掩膜、重采样大量遥感影像

本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件进行批量掩膜与批量重采样的操作~

Python ArcPy批量计算多时相遥感影像的各像元平均值

本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取~

Python批量填补遥感影像的无效值NoData

本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件批量进行无效值(NoData值)填充的方法~

ArcPy批量对大量遥感影像相减做差

本文介绍基于Python中ArcPy模块,对大量栅格遥感影像文件批量进行相减做差的方法~

HDF格式遥感影像批量转为TIFF格式:ArcPy实现

本文介绍基于Python中ArcPy模块,实现大量HDF格式栅格图像文件批量转换为TIFF格式的方法~

音频文件降噪及python示例

操作系统 :Windows 10_x64 Python版本:3.9.2 noisereduce版本:3.0.2 从事音频相关工作,大概率会碰到降噪问题,今天整理下之前学习音频文件降噪的笔记,并提供Audacity和python示例。 我将从以下几个方面展开: noisereduce库介绍 使用Aud

Python按条件筛选、剔除表格数据并绘制剔除前后的直方图

本文介绍基于Python语言,读取Excel表格文件数据,以其中某一列数据的值为标准,对于这一列数据处于指定范围的所有行,再用其他几列数据的数值,加以数据筛选与剔除;同时,对筛选前、后的数据分别绘制若干直方图,并将结果数据导出保存为一个新的Excel表格文件的方法~

我从 Python 潮流周刊提取了 800 个链接,精选文章、开源项目、播客视频集锦

你好,我是豌豆花下猫。前几天,我重新整理了 Python 潮流周刊的往期分享,推出了第 1 季的图文版电子书,受到了很多读者的一致好评。 但是,合集和电子书的篇幅很长,阅读起来要花不少时间。所以,为了方便大家阅读,我打算将合集进一步整理,分门别类将原始内容的标题罗列出来。 本文总计约 800 个链接