需要 Spatial Analyst 许可。
可使用类创建对象,通常称为实例。 将对象实例化后,即可使用其属性和方法。 Spatial Analyst 类,如邻域类和重映射类,通常用作地理处理工具参数设置的快捷方式,否则的话,这些参数会使用更加复杂的字符串。
通过类而非字符串创建和管理参数要容易得多。 使用类作为参数的好处如下:
- 类可以帮助并自动完成形式参数的各种实际参数的输入。
- 可以通过生成的对象来查询形式参数的各个实际参数。
- 可以修改类的各个实际参数以做进一步分析。
如需了解有关在地图代数中使用 Spatial Analyst 类的其他信息,请参阅以下内容:
以下是可以使用类轻松执行的应用程序示例:
- 确定类的类型或各个参数值:
例如,通过查询输入半径类型和搜索距离可确定在反距离权重 (IDW) 插值法中应用的乘方。
- 更改输入值:
例如,您可以根据论坛上公开的输入更改适宜性模型中的输入重分类值,从而探究不同情景对输出的影响,而无需重新创建重映射表。
- 执行灵敏度分析:
例如,您可以按 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
- 水平系数类
- KrigingModel 类
- 邻域类
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)
使用列表中的一系列类创建的类
一些工具使用需要一系列类作为输入的类参数。 这些类组成一个列表。 以下工具需要使用列表中的一系列类:按点提取和按矩形提取,它们通常按指定几何来提取数据。