需要 Spatial Analyst 许可。
可使用类创建对象,通常称为实例。 将对象实例化后,即可使用其属性和方法。 Spatial Analyst 类,如邻域类和重映射类,通常用作地理处理工具参数设置的快捷方式,否则的话,这些参数会使用更加复杂的字符串。
通过类而非字符串创建和管理参数要容易得多。 使用类作为参数的好处如下:
- 类可以帮助并自动完成形式参数的各种实际参数的输入。
- 可以通过生成的对象来查询形式参数的各个实际参数。
- 可以修改类的各个实际参数以做进一步分析。
有关在地图代数中使用 Spatial Analyst 类的其他信息,请参阅以下内容:
以下是可以使用类执行的应用程序示例:
- 确定类的类型或各个参数值:
例如,通过查询输入半径类型和搜索距离可确定在反距离权重插值法中应用的乘方。
- 更改输入值:
例如,您可以根据论坛上公开的输入更改适宜性模型中的输入重分类值,从而探究不同情景对输出的影响,而无需重新创建重映射表。
- 执行灵敏度分析:
例如,您可以按 5% 的增量以迭代方式更改适宜性模型的重映射表中的 To 和 From 值,从而探究输入条件的细微变化会如何影响输出。
- 执行误差分析:
例如,您可以多次运行模型,每次随意更改形式参数的实际参数,从而探究数据中的误差和不确定性可能产生的影响。
使用 Spatial Analyst 类
一些 Spatial Analyst 地理处理工具参数使用类对象作为输入。 通常,参数定义为简单字符串、数据集名称、路径、关键字、字段名称、容差和域名。 有些参数更为复杂,定义了一系列属性或值。 这种情况下,可使用类(例如,邻域或重映射表)来定义这些参数,而不必使用复杂的长文本字符串。 了解类构造函数的输入要求可以更轻松地创建、查询、更改和保存类对象。
以下是用作 Spatial Analyst 类参数的不同类型的输入:
- 标量
- 字符串
- Python 列表或一系列列表
- 其他类
为了提高可读性,建议将类设置为变量和工具中使用的变量。 例如:
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")
这些类中的每一个类都有预先确定的输入参数位置。 这些类可根据其所处理的工具参数进行分组:
- 模糊类
FuzzyGaussian、FuzzyLarge、FuzzyLinear、FuzzyMSLarge、FuzzyMSSmall、FuzzyNear、FuzzySmall
- 水平系数类
- 克里金模型类
- 邻域类
NbrAnnulus、NbrCircle、NbrIrregular、NbrRectangle、NbrWedge、NbrWeight
- 半径类
- 时间类
TimeWithinDay、TimeSpecialDays、TimeMultipleDays、TimeWholeYear
- 变换函数类
TfExponential、TfGaussian、TfLarge、TfLinear、TfLogarithm、TfLogisticDecay、TfLogisticGrowth、TfMSLarge、TfMSSmall、TfNear、TfPower、TfSmall、TfSymmetricLinear
- 垂直系数类
VfBinary、VfLinear、VfSymLinear、VfInverseLinear、VfSymInverseLinear、VfCos、VfSec、VfCosSec、VfSecCos、VfTable
使用 Python 列表创建的类
有些类较为复杂,如 TopoBoundary、TopoLake 和 TopoStream 类。 这些类需要一系列输入,并且用于地形转栅格工具中的参数。 输入系列在 Python 列表中定义,列表中的输入数量取决于具体情况(也就是分析所需的输入数量)。
例如,TopoBoundary 类构造函数需要包含一个或多个 inFeature 输入的列表。 标识为 inFeatures 的列表成为所生成对象的一个属性。 要查询或操作 inFeatures 列表中的任何项目,均可将每个项目视为列表中的一个条目(请参阅查询类)。
inBoundary = TopoBoundary(["inBound1.shp", "inBound2.shp"])
使用列表中的列表创建的类
使用其他工具时,将根据具体情况决定在一个参数中输入多少个输入条目。 这种类型的输入参数通过使用列表中的列表创建的类生成。 有三组工具的类基于列表中的列表创建:
- 重分类表(RemapRange、RemapValue)
- 加权重分类表(叠加和总和)(WOTable、WSTable)
- 地形类(子集)(TopoContour、TopoPointElevation、TopoSink)
例如,重映射类需要一个表作为输入。 该表使用代表 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)
使用列表中的一系列类创建的类
一些工具使用需要一系列类作为输入的类参数。 这些类组成一个列表。 以下工具需要使用列表中的一系列类:按点提取和按矩形提取,它们通常按指定几何来提取数据。