使用 Spatial Analyst 类的概述

类可用于创建对象,即通常所说的实例。对象实例化后,其属性和方法便可供用户使用。Spatial Analyst 类(如邻域类或重映射类)通常用作完整的地理处理工具参数设置的快捷方式,否则,这些参数会使用更加复杂的字符串。

通过类创建和管理参数要比通过字符串容易得多。将类用于参数的好处包括:

有关在地图代数中使用 Spatial Analyst 类的详细信息,请参阅以下部分:

创建类查询类更改类中的参数如何在 Python 中使用类

下面提供了一些可使用类轻松实现的应用示例:

使用 Spatial Analyst

一些 Spatial Analyst 地理处理工具参数使用类对象作为输入。通常将参数定义为简单字符串、数据集名称、路径、关键字、字段名称、容差和属性域名称。某些参数则较为复杂,用于定义一系列参数或值。在这种情况下,可使用类(如邻域或重映射表)来定义这些参数,而不必输入复杂的长文本字符串。了解类构造函数的输入要求可以更轻松地创建、查询、更改和保存类对象。

有几种不同的输入类型可用作 Spatial Analyst 类的参数:

为增加可读性,建议将类设置为变量,并在工具中使用变量。例如:

Neighborhood = NbrRectangle(5, 5, "MAP")
outRas = FocalStatistics("inRas", Neighborhood, "MEAN")

但是,如果您愿意,也可以在工具参数中定义类。

outRas = FocalStatistics("inRas", NbrRectangle(5, 5, "MAP"), "MEAN")

使用固定数量的输入创建的类

某些类是使用固定数量的简单标量或字符串参数构造的。例如,创建一个半径为五个地图单位的圆形邻域:

Neighborhood = NbrCircle(5, "MAP")
outRas = FocalStatistics("inRas", Neighborhood, "MAXIMUM")

其中每个类的输入参数都有预先确定的位置。这些类可根据其所处理的工具参数进行分组:

使用 Python 列表创建的类

有些类较为复杂,如 TopoBoundaryTopoLakeTopoStream 类。这些类需要一系列输入,并且用于地形转栅格工具中的参数。输入系列在 Python 列表中定义,列表中的输入数量取决于具体情况(也就是分析所需的输入数量)。

例如,TopoBoundary 类构造函数需要包含一个或多个 inFeature 输入的列表。标识为 inFeatures 的列表变成了所生成对象的一个属性。要查询或操作 inFeatures 列表中的任何项目,均可将每个项目视为列表中的一个条目(请参阅查询类)。

inBoundary = TopoBoundary(["inBound1.shp", "inBound2.shp"])

使用列表中的列表创建的类

对于其他工具,根据具体情况来决定输入到一个参数中的输入条目数。此类型的输入参数基于通过列表中的列表所创建的类生成。有三组工具的类基于列表中的列表创建:

例如,重映射类要求将表作为输入。该表使用代表 startValue、endValue 和 newValue 这三类的记录列表进行建模。表变成了所生成对象的属性。要查询或操作任何表输入,均可将表输入视为列表中的列表的条目(请参阅查询类)。

# Usage: RemapRange([[startValue, endValue, newValue],...])
myRemapRange = RemapRange([[-3, -1.75, 1], [-1.75, -0.5, 2], [-0.5, 0.75, 3], 
                           [0.75, 2, 4], [2, 3.25, 5], [3.25, 4.5, 6],
                           [4.5, 5.75, 7], [5.75, 7, 8]])
outReclassRR = Reclassify("inRas", "VALUE", myRemapRange)

使用列表中的一系列类创建的类

某些工具使用的类参数要求将一系列类作为输入。这些类按列表组合在一起。以下工具需要使用列表中的一系列类:按点提取按矩形提取,它们通常按指定几何来提取数据。

相关主题

5/10/2014