ARCGIS10栅格计算PYTHON代码 下载本文

使用python语言进行栅格计算

1重采样

通过更改像元大小和重采样方法来更改栅格数据集

用法:

1)可更改像元大小,但栅格数据集的范围将保持不变。 2)本工具仅能输出方形像元大小。 3)可将输出保存为 BIL、BIP、BMP、BSQ、DAT、GIF、GRID、IMG、JPEG、JPEG 2000、PNG、TIFF 格式或任意地理数据库栅格数据集。 4)有四个用于重采样技术参数的选项:

“最邻近”选项,用于执行最邻近分配法,是速度最快的插值方法。此选项主要用于离散数据(如土地使用分类),因为它不会更改像元的值。最大空间误差将是像元大小的一半。

“众数”选项,用于执行众数算法,可根据过滤器窗口内的最常用值确定像元的新值。与最邻近法一样,此选项主要用于离散数据;但与“最邻近”选项相比,“众数”选项通常可生成更平滑的结果。

“双线性”选项,用于执行双线性插值法,可根据四个最邻近输入像元中心的加权平均距离确定像元的新值。此选项用于连续数据,并会生成平滑的数据。 “三次”选项,用于执行三次卷积插值法,可通过拟合穿过 16 个最邻近输入像元中心的平滑曲线确定像元的新值。此选项适用于连续数据,尽管所生成的输出栅格可能会包含输入栅格范围以外的值。与通过运行最邻近重采样算法获得的栅格相比,输出栅格的几何变形程度较小。“三次”选项的缺点是需要更多的处理时间。在某些情况下,此选项会使输出像元值位于输入像元值范围之外。如果无法接受此结果,请转而使用“双线性”选项。

“双线性”或“三次”选项不得用于分类数据,因为像元值可能被更改。

5)输出栅格数据集的左下角与输入栅格数据集的左下角具有相同的地图空间坐标位置。

语法:

Resample_management (in_raster, out_raster, {cell_size}, {resampling_type})

实例: #Resample try:

import arcpy

arcpy.env.workspace = r\

##Resample TIFF image to a higher resolution

arcpy.Resample_management(\\

#{NEAREST最邻近 | BILINEAR 双线性| CUBIC 三次| MAJORITY众数}

except:

print \

print arcpy.GetMessages() 2加

逐个像元地将两个栅格的值相加(求和)或与一定的数值相加。

语法:

Plus_3d (in_raster_or_constant1, in_raster_or_constant2, out_raster)

实例:

# Name: jia.py

# Description: Adds the values of two rasters on a cell-by-cell basis. # Requirements: 3D Analyst Extension # Author: ESRI

# Import system modules import arcpy

from arcpy import env

# Set environment settings env.workspace = \

# Set local variables inRaster = \inConstant = 100

# Check out the ArcGI 3D Analyst extension license arcpy.CheckOutExtension(\

# Execute Plus

arcpy.Plus_3d(inRaster, inConstant,\

结果:将栅格数据bb中每个像元的值加上100得到新的栅格数据 3减

逐个像元地从第一个输入栅格的值中减去第二个输入栅格的值或减去一个确定的数值。

语法:

Minus_3d (in_raster_or_constant1, in_raster_or_constant2, out_raster)

实例:

# Name: jian.py

# Description: Adds the values of two rasters on a cell-by-cell basis. # Requirements: 3D Analyst Extension # Author: ESRI

# Import system modules import arcpy

from arcpy import env

# Set environment settings env.workspace = \

# Set local variables inRaster1 = \inRaster2 = \

# Check out the ArcGI 3D Analyst extension license arcpy.CheckOutExtension(\

# Execute Plus

arcpy.Minus_3d(inRaster1, inRaster2,\

结果:对栅格数据output.tif进行与output4.tif逐个像元值的减法运算得出新的栅格数据。 4乘

将两个栅格的值逐个像元地相乘或乘以一个定值。

语法:

Times_3d (in_raster_or_constant1, in_raster_or_constant2, out_raster)

实例:

# Name: cheng.py

# Description: Multiplies the values of two rasters on a cell-by-cell basis.

# Requirements: 3D Analyst Extension # Author: ESRI

# Import system modules import arcpy

from arcpy import env

# Set environment settings env.workspace = \

# Set local variables inRaster = \inConstant = 2

# Check out the ArcGIS 3D Analyst extension license arcpy.CheckOutExtension(\# Execute Times

arcpy.Times_3d(inRaster, inConstant, \

结果:逐个将每个像元值乘以2输出新的栅格。 5除

将两个栅格的值逐个像元地相除或除以一个定值。 当一个数除以零时,输出结果为 NoData。 输入的数据类型将决定输出的数据类型:

如果两个输入均为整数,则将执行整数除法,并且输出结果为整数。例如,如果 3 除以 2,则输出为 1。

如果两个输入中的任何一个为浮点型,则将执行浮点型除法,并且输出结果也为浮点型值。例如,如果 3 除以 2.0,则输出为 1.5。 语法:

Divide_3d (in_raster_or_constant1, in_raster_or_constant2, out_raster) 实例:

# Name: chu.py

# Description: Divides the values of two rasters on a cell-by-cell basis # Requirements: 3D Analyst Extension # Author: ESRI

# Import system modules import arcpy