需要 Spatial Analyst 许可。
描述
定义输入栅格、标识输入值的字段、栅格值的重映射、每个栅格的权重以及评估等级供加权叠加工具使用。
讨论
加权叠加工具使用 WOTable 对象。
对于在 WOTable 对象中标识的输入栅格中的每个值,加权叠加工具可根据重映射对象指定新值。两个可用的重映射类为 RemapValue 和 RemapRange。然而,由于 WOTable 通常用于处理分类数据,因此,建议输入 RemapValue 对象。
在加权叠加工具中,WOTable 对象中的每个输入栅格都是根据其重要性或者影响力百分比(此对象也进行了定义)进行加权。权重是相对百分比,并且影响力百分比权重的总和必须等于 100%。
“起始”、“终止”和“增量”评估级别参数不会影响所得计算值,但是却必须输入。
语法
WOTable (weightedOverlayTable, evaluationScale)
参数 | 说明 | 数据类型 |
weightedOverlayTable [[inRaster, influence, field, Remap],...] | 该表用于指定输入栅格及其影响、要使用的字段,以及重映射表(用于识别旧值需重映射到的新值)。
除了重映射表中比例权重的数值外,还可以使用以下选项:
| List |
evaluationScale [from, to, by] | 重映射旧值时所采用的新值的范围和间隔。该参数为对话框和脚本所需参数,但对脚本无任何影响。
| List |
属性
属性 | 说明 | 数据类型 |
weightedOverlayTable (可读写) | 包含用于标识将要重映射的栅格的加权叠加表、每个栅格的影响程度、要重映射的值和要将其重映射至的值。 | List |
evaluationScale (可读写) | 重映射旧值时所采用的新值的范围和间隔。 | List |
代码示例
演示如何创建 WOTable 类以及如何在 Python 窗口的 WeightedOverlay 工具中使用该类。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
myWOTable = WOTable([["snow", 50, "VALUE", RemapValue([[0, 1], [1, 1], [5, 5],
[6, 6], [7, 7], [8, 8], [9, 9], ["NODATA", "NODATA"]])],
["land", 20, "VALUE", RemapValue([[0, 1], [1, 1], [5, 5],
[6, 6],[7, 7], [8, 8], [9, 9], ["NODATA", "NODATA"]])],
["soil", 30, "VALUE", RemapValue([[0, 1], [1, 1], [2, 2],
[3, 3], [4, 4], [5, 5], [6, 6], [7, 7], [8, 8], [9, 9],
["NODATA", "NODATA"]])]], [1, 9, 1])
outWeightedOverlay = WeightedOverlay(myWOTable)
outWeightedOverlay.save("C:/sapyexamples/output/woverlaytbl")
使用 WOTable 类执行加权叠加分析。
# Name: WOTable_Ex_02.py
# Description: Uses the WOTable object to execute WeightedOverlay tool.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster1 = "snow"
inRaster2 = "land"
inRaster3 = "soil"
# Define WOTable
myWOTable = WOTable([[inRaster1, 50, "VALUE", RemapValue([[1, 1], [5, 5],
[6, 5], [7, 5], [8, 9], [9, 9], ["NODATA", "NODATA"]])],
[inRaster2, 20, "VALUE", RemapValue([[1, 1], [5, 5],
[6, 5], [7, 5], [8, 9], [9, 9], ["NODATA", "NODATA"]])],
[inRaster3, 30, "VALUE", RemapValue([[1, 1], [2, 1],
[3, 1], [4, 5], [5, 5], [6, 5], [7, 9], [8, 9], [9, 9],
["NODATA", "NODATA"]])]], [1, 9, 1])
# Execute WeightedOverlay
outWeightedOverlay = WeightedOverlay(myWOTable)
# Save the output
outWeightedOverlay.save("C:/sapyexamples/output/woverlaytbl2")