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

描述

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

详细了解“生成网络空间权重”的工作原理

插图

生成网络空间权重图解

使用方法

  • 网络数据集可以来自以下任何来源:

    • 已保存在本地驱动器或网络上的网络数据集。如果您的组织维护其自己的街道网络数据集,您可能已经访问过这些数据集。
    • ArcGIS OnlineArcGIS Enterprise 中托管的物流和发布路径服务。如果使用 ArcGIS Online 执行分析,求解程序将参考存储在 ArcGIS Online 云中的高质量的世界级网络数据集并会消耗 ArcGIS Online 配额
    • ArcGIS StreetMap Premium 提供的已配置网络数据集。这些网络数据集采用 SDC 格式,包括北美、拉丁美洲、欧洲、中东、非洲、日本、澳大利亚和新西兰。

  • 此工具将空间权重矩阵文件 (*.swm) 创建为输出。空间统计时空模式挖掘工具箱中的各种工具包括空间关系的概念化参数,该参数允许您使用此文件定义要素的空间关系。通过将空间权重矩阵与网络数据源一起使用,可以通过其距离、行驶时间和行驶成本定义空间关系。

  • 输入要素类必须是点。此工具不支持面和折线。

  • 唯一 ID 字段参数用于将该工具的输出与输入要素相关联。如果没有唯一 ID 值,则可以创建一个,方法是向要素类表添加一个新的整型字段,然后将此字段的值计算为与 FIDOBJECTID 字段的值相等。由于复制或编辑要素类时 FIDOBJECTID 字段值可能会发生变化,所以不能直接对唯一 ID 字段参数使用这些字段。

  • 与每个要素关联的相邻要素数量由 最大相邻要素数参数和三个阻抗中断参数。该工具将使用尽可能多的最接近输入要素的相邻要素,而不会超过最大相邻要素数,或者使用其阻抗超过任何中断值的任何要素。阻抗可以通过距离、行驶时间或成本进行定义。可以使用的阻抗类型取决于网络数据源的属性和出行模式参数的值。。

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

  • 空间关系的概念化参数指定反向时,建议您通过选中行标准化参数执行行标准化。如果不执行行标准化,则不同的距离单位将导致不同的空间权重。

  • 在分析之前,所有输入要素都将投影到网络数据集的空间参考,并且网络空间权重矩阵文件将在此空间参考中进行构建。建议您在此空间参考中执行所有后续分析,以正确表示空间关系。

语法

arcpy.stats.GenerateNetworkSWM(Input_Feature_Class, Unique_ID_Field, Output_Spatial_Weights_Matrix_File, Input_Network_Data_Source, Travel_Mode, Impedance_Distance_Cutoff, {Impedance_Temporal_Cutoff}, {Impedance_Cost_Cutoff}, {Maximum_Number_of_Neighbors}, {Time_of_Day}, {Time_Zone}, {Barriers}, {Search_Tolerance}, {Conceptualization_of_Spatial_Relationships}, {Exponent}, {Row_Standardization})
参数说明数据类型
Input_Feature_Class

表示网络上的位置的点要素类。对于每个要素,计算相邻要素和权重并将其存储在输出空间权重矩阵文件中。

Feature Class
Unique_ID_Field

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

Field
Output_Spatial_Weights_Matrix_File

此输出网络空间权重矩阵文件 (.swm) 将存储每个输入要素的相邻要素和权重。

File
Input_Network_Data_Source

用于查找每个输入要素的相邻要素的网络数据集。网络数据集通常表示街道网络,但也可以表示其他种类的运输网络,例如铁路或步行路径。网络数据集必须至少包含一个与距离、行驶时间或成本相关的属性。

Network Data Source
Travel_Mode

用于分析的交通模式。出行模式为一组网络设置(例如行驶限制和 U 形转弯),用于定义行人、汽车、卡车或其他交通媒介在网络中的移动方式。

arcpy.na.TravelMode 对象和包含出行模式有效 JSON 表示的字符串也可用作参数的输入。

String
Impedance_Distance_Cutoff

所允许的、要素的相邻要素最大阻抗距离。距离比该值远的任何要素都不会用作相邻要素。默认情况下不使用距离中断。

Linear Unit
Impedance_Temporal_Cutoff
(可选)

所允许的、要素的相邻要素最大阻抗行驶时间。行驶时间比该值长的任何要素都不会用作相邻要素。默认情况下不使用临时中断。

Time Unit
Impedance_Cost_Cutoff
(可选)

所允许的、要素的相邻要素最大阻抗成本。行驶成本比该值大的任何要素都不会用作相邻要素。默认情况下不使用成本中断。

Double
Maximum_Number_of_Neighbors
(可选)

用于表示各要素的最大相邻要素数的整数。由于阻抗中断,用于每个要素的实际相邻要素数可能会更少。

Long
Time_of_Day
(可选)

将在分析中考虑一天中的交通状况。交通状况会影响可在给定时间内行驶的距离。如果未提供任何日期或时间,则分析将不会考虑流量的影响。

您可以使用以下日期而非特定日期来指定一周中的某一天:

  • 今天 - 12/30/1899
  • 星期日 - 12/31/1899
  • 星期一 - 1/1/1900
  • 星期二 - 1/2/1900
  • 星期三 - 1/3/1900
  • 星期四 - 1/4/1900
  • 星期五 - 1/5/1900
  • 星期六 - 1/6/1900

例如,要指定行程从星期二 5:00 p.m. 开始,则请将该参数值指定为 1/2/1900 5:00 PM。

Date
Time_Zone
(可选)

指定 Time_of_Day 参数的时区。

  • LOCAL_TIME_AT_LOCATIONS将使用 Input_Feature_Class 位于的时区。这是默认设置。
  • UTC将使用世界标准时间 (UTC)。
String
Barriers
(可选)

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

Feature Layer
Search_Tolerance
(可选)

用于将每个输入要素分配到网络上的某个位置的最大距离。如果任何输入点并未恰好位于网络的线上,它们将被分配到网络上最近的位置进行分析。但是,如果该要素比来自网络上任何位置的搜索容差值都远,则该要素将不会被分配给网络,也不会包含在分析中。

Linear Unit
Conceptualization_of_Spatial_Relationships
(可选)

指定为每个相邻要素定义权重的方式。

  • INVERSE距离、时间或成本中较远的要素的权重将比附近的要素小。权重将按指数的倒数减小。
  • FIXED所有相邻要素都将获得同等权重。这是默认设置。
String
Exponent
(可选)

Conceptualization_of_Spatial_Relationships 参数指定 INVERSE 时使用的指数。通过将距离、时间或成本乘以指数幂来计算已分配给每个相邻要素的权重。默认值为 1,且该值必须介于 0.01 到 4 之间。权重将随着指数的增加而更快地下降。

Double
Row_Standardization
(可选)

指定是否会应用行标准化。当输入点的位置由于采样设计或施加的聚合方案而可能偏离时,建议使用行标准化。此外,还建议您在根据反距离、时间或成本对相邻要素加权时,对行进行标准化。

  • ROW_STANDARDIZATION将按行对空间权重执行标准化。每个权重都除以它的行总和。这是默认设置。
  • NO_STANDARDIZATION将不会对空间权重执行标准化。
Boolean

代码示例

GenerateNetworkSWM 示例 1(Python 窗口)

以下 Python 脚本演示了如何使用 GenerateNetworkSWM 工具:

import arcpy
arcpy.env.workspace = "c:\Data"
# Use a network data source hosted on ArcGIS Online.
arcpy.stats.GenerateNetworkSWM(r"Data.gdb\Hospital", "MyID", 
                               "Hospital.swm", "https://www.arcgis.com/",
                               "Driving Time", None, None, None, None, None, 
                               "LOCAL_TIME_AT_LOCATIONS", None, "5000 Meters",
                               "FIXED", 1, "ROW_STANDARDIZATION")
# Use a network data source stored on a local drive.
arcpy.stats.GenerateNetworkSWM(r"Data.gdb\Hospital", "MyID", "Hospital.swm", 
                               r"Data.gdb\transportation\streets_ND",
                               "Driving Time", None, None, None, None, None, 
                               "LOCAL_TIME_AT_LOCATIONS", None, "5000 Meters", 
                               "FIXED", 1, "ROW_STANDARDIZATION")
GenerateNetworkSWM 示例 2(独立脚本)

以下 Python 脚本演示了如何使用 GenerateNetworkSWM 工具:

# 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 extension 
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...
    arcpy.stats.GenerateNetworkSWM(r"Data.gdb\Hospital","MyID", 
        "Hospital.swm", r"Data.gdb\Transportation\Streets_ND",
        "Driving Time", None, None, None, None, None, 
        "LOCAL_TIME_AT_LOCATIONS", None, "5000 Meters", "FIXED", 
        1,"ROW_STANDARDIZATION")
    # Create Spatial Weights Matrix based on Euclidean Distance
    # Process: Generate Spatial Weights Matrix...
    arcpy.stats.GenerateSpatialWeightsMatrix(
        r"Data.gdb\Hospital", "MyID", r"Euclidean6Neighs.swm", 
        "K_NEAREST_NEIGHBORS", "EUCLIDEAN", 1, None, 6, 
        "ROW_STANDARDIZATION", None, None, '', None, None)
    # Calculate Moran's Index of Spatial Autocorrelation for
    # average hospital visit times using Network Spatial Weights
    # Process: Spatial Autocorrelation (Morans I)...
    moransINet = arcpy.stats.SpatialAutocorrelation("Data.gdb\Hospital", 
                     "VisitTime", "NO_REPORT", "GET_SPATIAL_WEIGHTS_FROM_FILE",
                     "EUCLIDEAN_DISTANCE", "ROW", None, "Hospital.swm", None)
    # Calculate Moran's Index of Spatial Autocorrelation for
    # average hospital visit times using Euclidean Spatial Weights
    # Process: Spatial Autocorrelation (Morans I)...
    moransIEuc = arcpy.stats.SpatialAutocorrelation("Data.gdb\Hospital", 
                     "VisitTime", "NO_REPORT", "GET_SPATIAL_WEIGHTS_FROM_FILE",
                     "EUCLIDEAN_DISTANCE", "ROW", None, r"Euclidean6Neighs.swm", 
                     None)
except arcpy.ExecuteError:
    # 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

相关主题