描述
根据要素属性确定哪些候选要素与单个或多个输入要素最相似或者最不相似。
插图
使用
您需要提供一个包含要匹配的输入要素的图层和另一个包含候选要素的图层,从中将获得匹配。通常,要匹配的输入要素和候选要素会在同一个要素图层中。虽然可选择创建两个单独的数据集,但您不必执行此操作。使用两个不同的选择集来创建图层要更加容易。假设您具有包含上个月发生的全部犯罪事件的文件。如果您要找出与最近劫车事件最相似的所有犯罪事件,可进行以下操作:
- 使用标准 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
渲染等级
该字段仅用于显示。此工具使用该字段为分析结果提供默认渲染。
输出要素<ArcGIS>/Desktop10.x/ArcToolbox/Templates/Layers图层会自动添加到内容列表中,同时对 LABELRANK 字段应用默认渲染。应用的渲染由 <ArcGIS>/Desktop10.x/ArcToolbox/Templates/Layers 路径下的图层文件定义。如有必要,可通过导入模板图层符号系统重新应用默认渲染。
语法
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 总数的数字,将返回所有候选要素的等级。 | Long |
Attributes_Of_Interest [field,...] | 表示匹配条件的数值属性列表。 | Field |
Fields_To_Append_To_Output [field,...] (可选) | 将包含 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 脚本)
以下独立 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: 是