描述
根据要素属性确定哪些候选要素与单个或多个输入要素最相似或者最不相似。
插图
使用方法
您需要提供一个包含要匹配的输入要素值的图层和另一个包含候选要素值的图层,从中将获得匹配。通常,这些值将位于同一要素图层中。一种方法是创建两个单独的数据集。另一种方法是创建具有两个不同的选择集的图层,这可能会更容易。例如,如果您拥有一个文件,其中包含上个月发生的全部犯罪事件,并且您要找出与最近劫车事件最相似的所有犯罪事件,则可以执行以下操作:
- 使用标准 ArcMap 选择工具或地理处理工具在包含所有犯罪事件的图层中选择最近劫车事件的记录。
- 右键单击含有选择内容的图层,然后单击选择 > 根据所选要素创建图层。将该新图层用于要匹配的输入要素参数。
- 在包含所有犯罪事件的图层中切换选择内容。将该图层用于候选要素参数。
如果存在多个要匹配的输入要素值,可根据感兴趣属性的平均值进行匹配。例如,如果存在两个要匹配的输入要素值,并且其中一个感兴趣属性值为人口变量,那么工具会检查人口数与平均人口值最接近的候选要素值。例如,如果人口值为 100 和 102,那么工具将会检查人口数接近 101 的候选要素。
输出要素值将始终包含点,除非要匹配的输入要素和候选要素值均为面或者折线。创建面或折线输出要素值会降低大型数据集的性能。请选中将输出折叠为点参数以强制使用点几何来提高性能。
借助最相似或最不相似参数,可以使用 MOST_SIMILAR 或 LEAST_SIMILAR 选项来搜索要素,以匹配要匹配的输入要素值。查看两者可能会有所帮助。例如,如果针对结果数参数输入 3,并针对最相似或最不相似参数选择 BOTH,则工具将返回三个最相似和三个最不相似的候选要素。
输出要素参数中给出的任何匹配解决方案将是与目标要匹配的输入要素参数最相似或最不相似的解决方案;单个解决方案不会同时出现两种情况(匹配的解决方案不会在输出要素参数中重复)。因此,如果针对最相似或最不相似参数选择二者,则可能出现的匹配结果的最大数量(结果数值)将是候选要素值数量的一半。如果针对结果数输入的值过大,则工具会将其调整为可能出现的最大值。
要探究相似性的空间模式,可以划分所有候选要素值的相似性等级。为此,对于结果数参数,请输入 0。该工具将确定候选数据集中的有效要素数量,并按照从最相似到最不相似的等级顺序将所有这些要素写入输出要素参数。
匹配方式参数选项为 ATTRIBUTE_VALUES、RANKED_ATTRIBUTE_VALUES 和 ATTRIBUTE_VALUES。
- ATTRIBUTE_VALUES - 最相似的候选要素会具有所有感兴趣属性值的最小平方差总和;在计算差异之前所有值都已标准化。
- RANKED_ATTRIBUTE_VALUES - 最相似的候选要素会具有所有感兴趣属性值的最小等级平方差总和。输出要素参数将在 SIMINDEX(等级平方差总和)字段中报告这些总和。
- ATTRIBUTE_PROFILES - 将测量余弦相似性。余弦相似性将在标准化属性值间检查相同关系,而并非尝试匹配量级。例如,存在 A1、A2、A3 和 A4 四个感兴趣属性值。A2 是 A1 的两倍,A3 与 A2 几乎相等,A4 是 A3 的三倍。对于 ATTRIBUTE_PROFILES 而言,该工具将检查具有以下属性关系的候选要素:两倍大、几乎相等和三倍大。由于该方法用于检查属性关系,因此您必须为该方法至少指定两个感兴趣属性值。可以使用余弦相似性方法 (ATTRIBUTE_PROFILES) 来查找地点,比如洛杉矶,但是总体比例较小。余弦相似性的指数范围在 1.0(完全相似)和 -1.0(完全不相似)之间。余弦相似性指数将写入输出要素参数的 SIMINDEX(余弦相似性)字段。
感兴趣属性值必须为数值,而且必须同时存在(相同字段名和相同字段类型)于要匹配的输入要素和候选要素数据集中。对于感兴趣属性参数,该工具将列出在要匹配的输入要素数据集中找到的所有数值字段。如果该工具未找到与候选要素对应的字段,则会出现一条警告,提示缺失的属性已从分析中删除。如果删除所有感兴趣属性值,则不会进行任何匹配,并且会出现错误,指示该工具无法执行分析。
将所有用于匹配的属性均写入输出要素参数。追加到输出的字段参数允许您在输出表中包含其他字段。由于感兴趣属性数值字段不是有效的标识符,因此可以为每个匹配解决方案追加名称或其他标识符字段。如果需要在多个匹配解决方案中做出选择,则可以追加其他非数值属性。例如,如果您需要的解决方案必须为多种土地利用类型之一,则追加分类土地利用属性将帮助您找到满足此要求的解决方案。您还可以在输出表中包含其他数值属性,仅供参考之用。例如,您可以为某一特定动物寻找合适的栖息地。您可以在要匹配的输入要素参数中输入该物种能够成功存活的已知地点。您可以选择与该物种成功存活相关的感兴趣属性值。此外,您还可以在输出要素值中追加数值区域属性,这并不是因为您想要与目标区域值进行实际匹配,而是因为您最终寻找的是具有最大区域的解决方案。
所有要匹配的输入要素值和匹配的解决方案,以及感兴趣属性和追加到输出的字段参数都将写入输出要素参数。此外,下列字段也包含在输出要素中:
字段名称 字段别名 说明 备注 MATCH_ID
MATCH_ID
首先列出要匹配的输入要素图层中的所有目标要素,并将其 OID 或 FID 标识符写入 MATCH_ID 字段中。匹配解决方案在该字段的值为 NULL 。
如果输出要素值为 shapefile,则 NULL 值将由很大的负数(例如 -21474836)来表示。
CAND_ID
CAND_ID
接下来将列出所有的匹配解决方案,该值表示这些解决方案的 OID 或 FID 标识符。要匹配的输入要素图层中的目标要素在该字段的值为 NULL。
如果输出要素值为 shapefile,则 NULL 值将由很大的负数(例如 -21474836)来表示。
SIMRANK
相似性等级
如果为匹配方法参数选择了 MOST_SIMILAR 或 BOTH,则所有匹配的解决方案均按照从最相似到最不相似的顺序进行等级划分。最相似匹配解决方案的等级值为 1。
如果为匹配方法参数选择了 MOST_SIMILAR 或 BOTH,则该字段将仅包含在输出要素中。
DSIMRANK
相异性等级
如果为匹配方法参数选择了 LEAST_SIMILAR 或 BOTH,则所有匹配的解决方案均按照从最不相似到最相似的顺序进行等级划分。最不相似的解决方案的等级值为 1。
如果为匹配方法参数选择了 LEAST_SIMILAR 或 BOTH,则该字段将仅包含在输出要素中。
SIMINDEX
值平方差总和、等级平方差总和或余弦相似性
该字段量化了每个匹配解决方案与目标要素的相似程度。
- 如果为匹配方法参数指定了 ATTRIBUTE_VALUES,则字段别名为 Sum of Squared Value Differences。
- 如果为匹配方法参数指定了 RANKED_ATTRIBUTE_VALUES,则字段别名为 Sum of Squared Rank Differences。
- 如果为匹配方法参数指定了 ATTRIBUTE_PROFILES,则字段别名为 Cosine Similarity。
如果仅有一个要匹配的输入要素值,则目标要素为该要素本身。如果指定了多个要匹配的输入要素值,则目标要素是通过所有感兴趣属性值的平均值创建的临时要素。
LABELRANK
渲染等级
该字段仅用于显示。此工具使用该字段为分析结果提供默认渲染。
输出要素图层会自动添加到内容列表中,同时对 LABELRANK 字段应用默认渲染。应用的渲染由 <ArcGIS>/Desktop10.x/ArcToolbox/Templates/Layers 路径下的图层文件定义。如有必要,可通过导入模板图层符号系统重新应用默认渲染。
语法
arcpy.stats.SimilaritySearch(Input_Features_To_Match, Candidate_Features, Output_Features, Collapse_Output_To_Points, Most_Or_Least_Similar, Match_Method, Number_Of_Results, Attributes_Of_Interest, {Fields_To_Append_To_Output})
参数 | 说明 | 数据类型 |
Input_Features_To_Match | 该图层或者图层上的选择含有您想要匹配的要素;您正在搜索与这些要素相似的其他要素。如果提供了多个要素,则会根据属性平均值进行匹配。 | Feature Layer |
Candidate_Features | 该图层或者图层上的选择包含候选匹配要素。该工具将在这些候选要素中检查与 Input_Features_To_Match 值最相似(或者最不相似)的要素。 | Feature Layer |
Output_Features | 输出要素类包含每个 Input_Features_To_Match 值的记录,以及查找到的所有与解决方案相匹配的要素的记录。 | Feature Class |
Collapse_Output_To_Points | 如果 Input_Features_To_Match 和 Candidate_Features 参数值均为线或面,指定是否将 Output_Features 参数的几何折叠为点或者将匹配输入要素的原始几何(线或面)。仅当具有 Desktop Advanced 许可时,此参数才可用。选择 COLLAPSE 将提高大型线和面数据集的工具性能。
| Boolean |
Most_Or_Least_Similar | 指定是否将标识与 Input_Features_To_Match 值最相似或最不相似的要素。
| String |
Match_Method | 用于指定是否根据值、等级或余弦关系进行匹配。
| String |
Number_Of_Results | 要查找的匹配解决方案的数量。输入 0 或一个大于 Candidate_Features 值总数的数字,将返回所有候选要素的等级。默认值为 10。 | Long |
Attributes_Of_Interest [Attributes_Of_Interest,...] | 表示匹配条件的数值属性。 | Field |
Fields_To_Append_To_Output [Fields_To_Append_To_Output,...] (可选) | Output_Features 参数随附的字段。这些字段不用于确定相似性;它们仅包含在 Output_Features 参数中供参考之用。 | Field |
代码示例
SimilaritySearch 示例 1(Python 窗口)
以下 Python 窗口脚本演示了如何使用 SimilaritySearch 函数。
import arcpy
import arcpy.stats as SS
arcpy.env.workspace = r"C:\Analysis"
SS.SimilaritySearch("Crime_selection", "AllCrime", "c:\\Analysis\\CrimeMatches",
"NO_COLLAPSE", "MOST_SIMILAR", "ATTRIBUTE_VALUES", 4,
"HEIGHT;WEIGHT;SEVERITY;DST2CHPSHP", "Name;WEAPON")
SimilaritySearch 示例 2(独立脚本)
以下独立 Python 脚本演示了如何使用 SimilaritySearch 函数。
# Similarity Search of crime data in a metropolitan area
# Import system modules
import arcpy
import os
import arcpy.stats as SS
# Set property to overwrite existing output
arcpy.env.overwriteOutput = True
try:
# Set the current workspace (to avoid having to specify the full path to
# the feature classes each time)
arcpy.env.workspace = r"C:\Analysis"
# Make a layer from the crime feature class
arcpy.MakeFeatureLayer_management("AllCrime", "Crime_selection")
# Select the target crime to match
# Process: Select By Attribute
arcpy.SelectLayerByAttribute_management("Crime_selection", "NEW_SELECTION",
'"OBJECTID" = 1230043')
# Use Similarity Search to find to create groups based on different
# variables or analysis fields
# Process: Group Similar Features
SS.SimilaritySearch("Crime_selection", "AllCrime", "CJMatches",
"NO_COLLAPSE", "MOST_SIMILAR", "ATTRIBUTE_VALUES", 4,
"HEIGHT;WEIGHT;SEVERITY;DST2CHPSHP", "Name;WEAPON")
except:
# If an error occurred when running the tool, print out the error message.
print(arcpy.GetMessages())
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是