相似性搜索 (空间统计)

描述

根据要素属性确定哪些候选要素与单个或多个输入要素最相似或者最不相似。

了解有关“相似性搜索”工作原理的详细信息

插图

相似性搜索

使用方法

  • 您需要提供一个包含要匹配的输入要素的图层和另一个包含候选要素的图层,从中将获得匹配。通常,要匹配的输入要素候选要素会在同一个要素图层中。虽然可选择创建两个单独的数据集,但您不必执行此操作。而使用两个不同的定义查询来创建图层会更加容易。假设您具有包含上个月发生的全部犯罪事件的文件。如果您要找出与最近劫车事件最相似的所有犯罪事件,可进行以下操作:

    • 复制显示所有犯罪事件的图层并将其粘贴到内容来生成重复的图层。然后重命名该图层。
    • 在重命名的图层上选择或设置表示最近劫车事件要素的定义查询。将该图层用于要匹配的输入要素参数。
    • 为原始图层应用选择或设置定义查询以便排除最近劫车事件。将该图层用于候选要素参数。

  • 如果存在多个要匹配的输入要素,可根据感兴趣属性的平均值进行匹配。例如,如果存在两个要匹配的输入要素,并且其中一个感兴趣属性为人口变量,那么工具会查找人口数与平均人口值最接近的候选要素。例如,如果人口值为 100 和 102,那么工具会查找人口数接近 101 的候选要素。

    注:

    如果具有多个要匹配的输入要素,则可以选择具有相似值的感兴趣属性。例如,如果其中一个输入的人口值为 100,另一个为 100,000,则工具将查找人口数接近两者平均值 50,050 的匹配。注意,该平均值与两个要匹配的输入要素的人口值均不相同。

  • 输出要素将始终包含点,除非要匹配的输入要素候选要素均为面或者折线。创建面或者折线输出要素会降低大型数据集的性能,因此您可以选中将输出折叠为点以强制提高点几何的性能。

  • 使用最相似或最不相似参数,可以搜索要匹配的输入要素最相似要素或者最不相似要素。在某些情况下,您希望看见范围的两端。例如,如果在结果数参数中输入 3,在最相似或最不相似参数中输入 Both,则工具将返回三个最相似和三个最不相似的候选要素。

  • 输出要素中给出的任何匹配解决方案均是与目标要匹配的输入要素最相似或最不相似的解决方案;单个解决方案不会同时出现两种情况(匹配的解决方案不会在输出要素中重复)。因此,如果在最相似或最不相似参数中选择二者,则可能出现的匹配结果的最大数量(结果数)将是候选要素数量的一半。如果输入的结果数值过大,工具会将其调整为可能出现的最大值。

  • 有时,为了探究相似性的空间模式,您可能希望划分所有候选要素的相似性等级。指明希望对所有候选要素划分等级的一种简单方法是在结果数参数中输入 0。然后,该工具会确定候选数据集中的有效要素数量,并按照从最相似到最不相似的等级顺序将所有这些要素写入输出要素

  • 针对匹配方法参数,可选择属性值等级属性值或者属性剖面

    • 对于属性值而言,最相似的候选要素会具有所有感兴趣属性的最小平方差总和;在计算差异之前所有值都已标准化。
    • 对于等级属性值而言,最相似的候选要素会具有所有感兴趣属性的最小等级平方差总和。输出要素将在 SIMINDEX(等级平方差总和)字段中报告这些总和。
    • 对于属性剖面而言,将测量余弦相似性。余弦相似性将在标准化属性值间查找相同关系,而并非尝试匹配量级。假设有 A1、A2、A3 和 A4 四个感兴趣属性,其中 A2 是 A1 的两倍,A3 与 A2 几乎相等,A4 是 A3 的三倍。对于属性剖面匹配方法而言,该工具会查找具有以下属性关系的候选要素:两倍大、几乎相等和三倍大。由于该方法用于查看属性关系,因此您必须为该方法至少指定两个感兴趣属性。您也许会使用余弦相似性方法(属性剖面)来查找地点,比如洛杉矶,但是总体比例较小。余弦相似性的指数范围在 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

    相似性等级

    如果为匹配方法参数选择了最相似二者,则所有匹配的解决方案均按照从最相似到最不相似的顺序进行等级划分。最相似匹配解决方案的等级值为 1。

    如果为匹配方法参数选择了最相似二者,则该字段将仅包含在输出要素中。

    DSIMRANK

    相异性等级

    如果为匹配方法参数选择了最不相似二者,则所有匹配的解决方案均按照从最不相似到最相似的顺序进行等级划分。最不相似的解决方案的等级值为 1。

    如果为匹配方法参数选择了最不相似二者,则该字段将仅包含在输出要素中。

    SIMINDEX

    值平方差总和、等级平方差总和或余弦相似性

    该字段量化了每个匹配解决方案与目标要素的相似程度。

    • 如果为匹配方法指定了属性值,则字段别名为 Sum of Squared Value Differences
    • 如果为匹配方法指定了等级属性值,则字段别名为 Sum of Squared Rank Differences
    • 如果为匹配方法指定了属性剖面,则字段别名为 Cosine Similarity
    有关如何计算这些索引的详细信息,请参阅相似性搜索工作原理

    如果仅有一个要匹配的输入要素,则目标要素为该要素本身。如果指定了多个要匹配的输入要素,则目标要素是通过所有感兴趣属性的平均值创建的临时要素。

    LABELRANK

    渲染等级

    该字段仅用于显示。此工具使用该字段为分析结果提供默认渲染。

  • 输出要素图层会自动添加到内容列表中,同时对 LABELRANK 字段应用默认渲染。应用的渲染由 <ArcGIS Pro>\Resources\ArcToolBox\Templates\Layers 路径下的图层文件定义。需要时,可使用应用图层的符号设置工具重新应用默认渲染。

    注:

    默认采样大小为 10,000 条记录。当结果数超过该默认值时,您将需要提高采样大小来渲染所有结果。要提高采样大小,单击符号系统窗格上的 菜单 并选择高级。展开采样大小选项并更改最大采样大小值。

语法

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_MatchCandidate_Features 同时为线或面,可以选择是要将 Output_Features 的几何折叠为点,还是使其与输入要素的原始几何(线或面)相匹配。只有具有 Desktop Advanced 许可才能使用此选项。针对大型线或面数据集选择 COLLAPSE 将会提高工具性能。

  • COLLAPSE线和面要素将表示为要素质心(点)。
  • NO_COLLAPSE输出几何将与输入要素的线或面几何相匹配。这是默认设置。
Boolean
Most_Or_Least_Similar

选择是对与Input_Features_To_Match最相似的要素还是对最不相似的要素感兴趣。

  • MOST_SIMILAR查找最相似的要素。
  • LEAST_SIMILAR查找最不相似的要素。
  • BOTH查找最相似的要素和最不相似的要素。
String
Match_Method

选择是否应根据值、等级或余弦关系进行匹配。

  • ATTRIBUTE_VALUES相似性或相异性取决于所有感兴趣属性的标准化属性值平方差的总和。
  • RANKED_ATTRIBUTE_VALUES相似性或相异性取决于所有感兴趣属性的等级平方差的总和。
  • ATTRIBUTE_PROFILES将根据余弦相似性函数来计算所有感兴趣属性的相似性或相异性。
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: 是

相关主题