复杂语句
需具备 Spatial Analyst 许可方可使用。
需具有 Image Analyst 许可才能使用。
可通过地图代数在单个语句中创建包含多个运算符和工具的语句。 凭借在单个语句中输入多个运算符和工具,您可以更加高效地构建复杂交互功能,进而缩减总的处理时间。 复杂表达式不仅限于 ArcGIS Spatial Analyst 扩展模块的工具提供的功能;它们还可以包括其他工具箱中的工具。 构建复杂语句时,需要遵守一组为确保语句正确运行而设定的特定交互规则。
复杂语句规则
使用下面的规则列表来引导您创建有效的复杂语句。
在复杂语句中,只有等号左侧的输出内容才会成为栅格对象。
表达式的运行顺序由圆括号和使用的运算符的优先级决定。 有关运算符优先级的详细信息,请参阅运算符优先级表。
outRaster = Raster("inras1") + Raster("inras2") / Raster("inras3")在上述语句中,
inras2除以inras3,然后将结果与inras1相加。您可以使用括号控制运行顺序。 圆括号可嵌套使用,此时无论运算符的优先级值如何,都将首先处理最内层圆括号内的表达式。
outRas = Raster("inras1") / (Raster("inras2") + Raster("inras3"))在上述语句中,
inras1除以inras2与inras3之和。在单个表达式中连续使用多个布尔(~、&、^、|)运算符或关系(<、<=、>、>=、==、!=)运算符时,应使用括号。 例如,在以下表达式 (a>2) & (a<5) 中需要使用圆括号。
outRas = (Raster("a") > 2 ) & ( Raster("a") < 5)抢先版本:
有些表达式可能不是需要括号,而是需要重写。 例如,形式为
a < b < c的表达式将不会运行,而添加括号会改变表达式的含义。 因此,要成功运行表达式,需要将其按(a < b) & (b < c)的形式重写。运算符、变量、数字和工具都可以在复杂语句中使用。
outRas = Sin("inras1") + Raster("inras2") + 8const = 10 outRas = Raster("inras1") + 2 * const在使用运算符创建的语句中适用于圆括号的所有规则,同样适用于使用工具和运算符创建的语句中的圆括号。 将首先处理最内层嵌套的圆括号内的工具或运算符。
num = 10 outRas = (ZonalStatistics((Raster("inras2") + Raster("inras3")), "Value", "valueras", "MAXIMUM") - num ) / 8在上述语句中,
inras2与inras3之和用作分区统计工具的输入。 然后减去num的值后再相除。在一系列语句中,前一个语句的输出可用作后一个语句的输入。
outAdd = Raster("inras1") + Raster("inras2") outRas = FocalStatistics(outAdd, NbrCircle(5, "Map"), "MEAN")在上述示例中,
outAdd是由inras1与inras2之和创建的栅格对象。 由于outAdd是一个变量,因此在用作后续焦点统计工具的输入时,不需要加引号。无论结果是栅格还是要素类,任何工具之间都可以相互嵌套。 所需的嵌套工具输出将用作外层工具的输入。
outdistance = EucDistance(ContourList("elevation", "#", [1500]))在此示例中,等值线列表工具的输出用作欧氏距离工具的输入。
dist = EucDistance(arcpy.analysis.Select("schools", "#", "Pop>2000"))在上述示例中,“分析”工具箱选择工具的输出用作欧氏距离工具的输入。
注:
由于嵌套工具创建的输出仅为大型工作流的一个中间阶段,那么输出参数可由井号
#替换,以便工具为此临时输出创建唯一路径和名称。 有关混列线符号使用的详细信息将在帮助主题“在 Python 使用工具”的工具输出部分进行讨论。要使用表达式中某一工具的可选输出,必须使用数据集名称或表示该数据集的变量。
costDist = CostDistance("source", "in_cost", 15000, "out_bklink") costOut = CostPath("dest", costDist, "out_bklink")在上述示例中,可选输出回溯链接栅格是工作空间中名为
"out_bklink"的输出。bklink = "C:/results/out_bklink" costDist = CostDistance("source", "in_cost", 15000, bklink) costOut = CostPath("dest", costDist, bklink)在上述示例中,回溯链接栅格在运行工具之前由变量定义。 该变量指向输出回溯链接栅格数据使用的位置和名称。