复杂语句

需要 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 除以 inras2inras3 之和。

  • 在单个表达式中连续使用多个布尔(~&^|)运算符或关系(<<=>>===!=)运算符时,应使用括号。 例如,在以下表达式 (a>2) & (a<5) 中需要使用圆括号。
    outRas = (Raster("a") > 2 ) & ( Raster("a") < 5)
    抢先版本:

    有些表达式可能不是需要括号,而是需要重写。 例如,形式为 a < b < c 的表达式将不会执行,而添加括号会改变表达式的含义。 因此,要成功执行此表达式,需要将其按 (a < b) & (b < c) 形式重写。

  • 运算符、变量、数字和工具都可以在复杂语句中使用。
    outRas = Sin("inras1") + Raster("inras2") + 8
    const = 10
    outRas = Raster("inras1") + 2 * const
  • 在使用运算符创建的语句中适用于圆括号的所有规则,同样适用于使用工具和运算符创建的语句中的圆括号。 将首先处理最内层嵌套的圆括号内的工具或运算符。
    num = 10
    outRas = (ZonalStatistics((Raster("inras2") + Raster("inras3")),
                             "Value", "valueras", "MAXIMUM") - num ) / 8

    在上述语句中,inras2inras3 之和用作分区统计工具的输入。 然后减去 num 的值后再相除。

  • 在一系列语句中,前一个语句的输出可用作后一个语句的输入。
    outAdd = Raster("inras1") + Raster("inras2")
    outRas = FocalStatistics(outAdd, NbrCircle(5, "Map"), "MEAN")

    在上述示例中,outAdd 是由 inras1inras2 之和创建的栅格对象。 由于 outAdd 是一个变量,因此在用作后续焦点统计工具的输入时,不需要加引号。

  • 无论结果是栅格还是要素类,任何工具之间都可以相互嵌套。 所需的嵌套工具输出将用作外层工具的输入。
    outdistance = EucDistance(ContourList("elevation", "#", [1500]))
    在此示例中,等值线列表工具的输出用作欧氏距离工具的输入。
    dist = EucDistance(arcpy.Select_analysis("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)
    在上述示例中,回溯链接栅格在执行工具之前由变量定义。 该变量指向输出回溯链接栅格数据使用的位置和名称。

相关主题


在本主题中
  1. 复杂语句规则