生成网络空间权重 (空间统计)

需要 Network Analyst 许可。

描述

使用网络数据集构建一个空间权重矩阵文件 (.swm),从而在基础网络结构方面定义要素空间关系。

旧版本:

此工具已弃用。已经创建了具有增强功能和新功能的新工具,这些功能包括接受来自门户服务的网络。请参见更新的生成网络空间权重矩阵工具。

插图

生成网络空间权重图解

使用方法

  • 此工具的输出是空间权重矩阵文件 (.swm)。需要指定空间关系的概念化选项的工具将接受空间权重矩阵文件;为空间关系的概念化参数选择 GET_SPATIAL_WEIGHTS_FROM_FILE,并且为权重矩阵文件参数指定使用此工具创建的空间权重文件的完整路径。

  • 此工具的设计初衷是仅用来处理输入要素类点数据。

  • 空间权重矩阵可将数据集中各要素间的空间关系进行量化。空间统计工具箱中的许多工具都可评估其邻近要素上下文内的每个要素。空间权重矩阵文件就是用于定义这些邻域关系。对于此工具,如果行程仅限于一个网络,则邻域关系取决于要素间的时间或距离。有关空间权重和空间权重矩阵文件的详细信息,请参阅“空间权重”。

  • 提示:

    多个组织维护他们自己的街道网络数据集,而您可能已经访问过这些数据集。作为替代,Street Map Premium for ArcGIS 包含以 SDC 格式预构建的网络数据集,其中包括北美洲、拉丁美洲、欧洲、中东和非洲、日本、澳大利亚和新西兰。此工具可直接使用这些网络数据集。

  • 唯一 ID 字段与运行此工具后所获得的要素关系关联。因此,每个要素的唯一 ID 值都必须唯一,而且通常应该位于与要素类一同保留的永久性字段中。如果没有唯一 ID 字段,则可以轻松地创建一个,方法是向要素类表添加一个新的整型字段(添加字段),然后将此字段的值计算为与 FIDOBJECTID 字段的值相等(计算字段)。由于复制或编辑要素类时 FIDOBJECTID 字段值可能会发生变化,所以不能直接对唯一 ID 参数使用这些字段。

  • 最大相邻要素数参数可指定将与各要素关联的精确相邻要素数。阻抗中断会覆盖相邻要素数参数,因此,如果不能在中断距离或时间内找到指定数量的相邻要素,则有些要素的相邻要素可能会减少。

  • 可以在网络数据集中使用等级(如果存在等级)定义空间关系,方法是使用在分析中应用等级参数。等级可将网络边分为主要道路、次要道路和地方干道。如果使用网络等级创建要素的空间关系,则在选择行进道路时会优先选择主要道路,然后是次要道路,最后是地方干道。

  • 如果使用 Street Map Premium for ArcGIS 中预构建的网络数据集(使用出行模式),可预填充某些参数选项,且无法对这些参数进行更改。

  • 此工具不支持输出坐标系环境设置。进行分析前,会将所有要素几何进行投影,使之与网络数据集关联的空间参考相匹配。此工具创建生成的空间权重矩阵文件将反映使用“网络数据集”空间参考所定义的空间关系。在使用网络空间权重矩阵文件执行分析时,建议对输入要素类进行投影,使之与用于创建网络 SWM 的网络数据集的坐标系相匹配。

  • 警告:

    在使用 shapefile 时,请注意 shapefile 无法存储空值。根据非 shapefile 输入创建 shapefile 的工具或其他过程可能会将空值存储(或解释)为零。某些情况下,空值则以极大的负值储存于 shapefile 中。这会产生意外的结果。有关详细信息,请参阅 shapefile 输出的地理处理注意事项。

语法

arcpy.stats.GenerateNetworkSpatialWeights(Input_Feature_Class, Unique_ID_Field, Output_Spatial_Weights_Matrix_File, Input_Network, Impedance_Attribute, {Impedance_Cutoff}, {Maximum_Number_of_Neighbors}, {Barriers}, {U-turn_Policy}, {Restrictions}, {Use_Hierarchy_in_Analysis}, {Search_Tolerance}, {Conceptualization_of_Spatial_Relationships}, {Exponent}, {Row_Standardization}, {Travel_Mode}, {Time_of_Day})
参数说明数据类型
Input_Feature_Class

要素间网络空间关系的点要素类将被评估。

Feature Class
Unique_ID_Field

包含输入要素类中每个要素不同值的整型字段。如果没有“唯一 ID”字段,则可以创建一个,方法是向要素类表添加一个整型字段,然后将此字段的值计算为与 FIDOBJECTID 字段的值相等。

Field
Output_Spatial_Weights_Matrix_File

输出网络空间权重矩阵 (.swm) 文件。

File
Input_Network

将对输入要素类中各要素间空间关系进行定义的网络数据集。网络数据集通常表示街道网络,但也可能表示其他种类的交通网。网络数据集至少需要一个基于时间和一个基于距离的成本属性。

Network Dataset Layer
Impedance_Attribute

在分析中被用作阻抗的成本单位类型。

String
Impedance_Cutoff
(可选)

为空间关系的 INVERSEFIXED 概念化指定中断值。使用由 Impedance_Attribute 参数指定的单位输入此值。

零值表明应未应用任何阈值。此参数留空时,将根据输入要素类范围和要素数量计算默认阈值。

Double
Maximum_Number_of_Neighbors
(可选)

用于表示要为各要素查找的最大相邻要素数的整数。

Long
Barriers
(可选)

一种点要素类的名称,其中的要素用于表示阻塞的路口、封锁的道路、事故现场或网络中行程被阻止的其他位置。

Feature Layer
U-turn_Policy
(可选)

指定可选的 U 形转弯限制。

  • ALLOW_UTURNSU 形转弯可以出现在任何位置。这是默认设置。
  • NO_UTURNS导航过程中不允许有任何 U 形转弯。
  • ALLOW_DEAD_ENDS_ONLYU 形转弯仅允许出现在死角(即单价交汇点)。
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLYU 形转弯仅允许出现在死角和交点处。
String
Restrictions
[Restriction,...]
(可选)

限制列表。选中在计算空间关系时要遵守的限制。

String
Use_Hierarchy_in_Analysis
(可选)

指定是否在分析中使用等级。

  • USE_HIERARCHY将在启发式路径算法中使用网络数据集的等级属性来加速分析过程。
  • NO_HIERARCHY将改为使用精确的路径算法。如果不存在等级属性,此选项不影响分析。
Boolean
Search_Tolerance
(可选)

在网络数据集的 Input_Feature_Class 中查找要素时使用的搜索阈值。该参数包括搜索值和容差单位。

Linear Unit
Conceptualization_of_Spatial_Relationships
(可选)

指明如何指定与每个空间关系关联的加权方式。

  • INVERSE远处要素的权重比近处要素的权重小。
  • FIXEDImpendance_Cutoff 之内的要素是相邻要素(权重为 1);Impendance_Cutoff 之外的要素没有加权(权重为 0)。
String
Exponent
(可选)

用于 INVERSE Conceptualization_of_Spatial_Relationships 计算的参数。典型值是 1 或 2。在此指数值增大时,权重会随着距离的增加快速下降。

Double
Row_Standardization
(可选)

指定是否应用行标准化。当要素的分布由于采样设计或施加的聚合方案而可能出现偏离时,建议使用行标准化。

  • ROW_STANDARDIZATION按行对空间权重执行标准化。每个权重都除以它的行总和。
  • NO_STANDARDIZATION不对空间权重执行标准化。
Boolean
Travel_Mode
(可选)

用于分析的交通模式。始终选择自定义。要显示其他出行模式,必须使其显示在网络数据集参数指定的网络数据集中。

出行模式是在网络数据集上定义的,并会提供模型车、货车、步行或其他出行模式的参数的覆盖值。

String
Time_of_Day
(可选)

指定行驶时间是否应该考虑交通状况。尤其是城市化地区的交通状况,可以显著影响指定行驶时间内涉及的区域。如果未指定日期或时间,在某一特定行驶时间内行驶的距离将不受交通影响。

Date

代码示例

GenerateNetworkSpatialWeights 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 GenerateNetworkSpatialWeights 工具。

import arcpy
arcpy.env.workspace = "c:/data"
arpcy.GenerateNetworkSpatialWeights_stats("Hospital.shp", "MyID",
                                          "network6Neighs.swm", "Streets_ND",
                                          "MINUTES", 10, 6, "#", "ALLOW_UTURNS",
                                          "#", "USE_HIERARCHY", "#", "INVERSE", 
                                          1, "ROW_STANDARDIZATION")
GenerateNetworkSpatialWeights 示例 2(独立脚本)

以下独立 Python 脚本演示了如何使用 GenerateNetworkSpatialWeights 工具。

# Create a Spatial Weights Matrix based on Network Data 
# Import system modules
import arcpy
# Set the environment property to overwrite existing output
arcpy.env.overwriteOutput = True
# Check out the ArcGIS Network Analyst 扩展模块 (required for the Generate Network Spatial Weights tool)
arcpy.CheckOutExtension("Network")
# Local variables...
workspace = r"C:\Data"
try:
    # Set the current workspace (to avoid having to specify the full path to 
    # the feature classes each time)
    arcpy.env.workspace = workspace
    # Create Spatial Weights Matrix based on Network Data 
    # Process: Generate Network Spatial Weights... 
    nwm = arcpy.GenerateNetworkSpatialWeights_stats("Hospital.shp", "MyID",
                        "network6Neighs.swm", "Streets_ND",
                        "MINUTES", 10, 6, "#", "ALLOW_UTURNS",
                        "#", "USE_HIERARCHY", "#", "INVERSE",
                        1, "ROW_STANDARDIZATION")
    # Create Spatial Weights Matrix based on Euclidean Distance
    # Process: Generate Spatial Weights Matrix... 
    swm = arcpy.GenerateSpatialWeightsMatrix_stats("Hospital.shp", "MYID",
                        "euclidean6Neighs.swm",
                        "K_NEAREST_NEIGHBORS",
                        "#", "#", "#", 6) 
    # Calculate Moran's Index of Spatial Autocorrelation for 
    # average hospital visit times using Network Spatial Weights 
    # Process: Spatial Autocorrelation (Morans I)...       
    moransINet = arcpy.SpatialAutocorrelation_stats("Hospital.shp", "VisitTime",
                        "NO_REPORT", "GET_SPATIAL_WEIGHTS_FROM_FILE", 
                        "EUCLIDEAN_DISTANCE", "NONE", "#", 
                        "network6Neighs.swm")
    # Calculate Moran's Index of Spatial Autocorrelation for 
    # average hospital visit times using Euclidean Spatial Weights   
    # Process: Spatial Autocorrelation (Morans I)...       
    moransIEuc = arcpy.SpatialAutocorrelation_stats("Hospital.shp", "VisitTime",
                        "NO_REPORT", "GET_SPATIAL_WEIGHTS_FROM_FILE", 
                        "EUCLIDEAN_DISTANCE", "NONE", "#", 
                        "euclidean6Neighs.swm")
except:
    # If an error occurred when running the tool, print out the error message.
    print arcpy.GetMessages()

许可信息

  • Basic: 需要 Network Analyst
  • Standard: 需要 Network Analyst
  • Advanced: 需要 Network Analyst