需要 Network Analyst 许可。
描述
使用网络数据集构建一个空间权重矩阵文件 (.swm),从而在基础网络结构方面定义要素空间关系。
插图
使用方法
-
此工具的输出是空间权重矩阵文件 (.swm)。需要指定空间关系的概念化选项的工具将接受空间权重矩阵文件;为空间关系的概念化参数选择 GET_SPATIAL_WEIGHTS_FROM_FILE,并且为权重矩阵文件参数指定使用此工具创建的空间权重文件的完整路径。
-
此工具的设计初衷是仅用来处理输入要素类点数据。
-
空间权重矩阵可将数据集中各要素间的空间关系进行量化。空间统计工具箱中的许多工具都可评估其邻近要素上下文内的每个要素。空间权重矩阵文件就是用于定义这些邻域关系。对于此工具,如果行程仅限于一个网络,则邻域关系取决于要素间的时间或距离。有关空间权重和空间权重矩阵文件的详细信息,请参阅空间权重。
-
唯一 ID 字段与运行此工具后所获得的要素关系关联。因此,每个要素的唯一 ID 值都必须唯一,而且通常应该位于与要素类一同保留的永久性字段中。如果没有唯一 ID 字段,则可以轻松地创建一个,方法是向要素类表添加一个新的整型字段(添加字段),然后将此字段的值计算为与 FID 或 OBJECTID 字段的值相等(计算字段)。由于复制或编辑要素类时 FID 和 OBJECTID 字段值可能会发生变化,所以不能直接对唯一 ID 参数使用这些字段。
-
此工具的最大相邻要素数参数可指定将与各要素关联的精确相邻要素数。阻抗中断会覆盖相邻要素数参数,因此,如果不能在中断距离/时间内找到指定数量的相邻要素,则有些要素的相邻要素可能会减少。
-
可以在网络数据集中使用等级(如果存在等级)定义空间关系,方法是选中在分析中应用等级参数。等级可将网络边分为主要道路、次要道路和地方干道。如果使用网络等级创建要素的空间关系,则在选择行进道路时会优先选择主要道路,然后是次要道路,最后是地方干道。
如果使用从 Street Map Premium for ArcGIS中获取的预构建的网络数据集(使用出行模式),可预填充某些参数选项,且无法对这些参数进行更改。
-
此工具不支持输出坐标系环境设置。进行分析前,会将所有要素几何进行投影,使之与网络数据集关联的空间参考相匹配。此工具创建生成的空间权重矩阵文件将反映使用“网络数据集”空间参考所定义的空间关系。在使用网络空间权重矩阵文件执行分析时,建议对输入要素类进行投影,使之与用于创建网络 SWM 的网络数据集的坐标系相匹配。
语法
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”字段,则可以创建一个,方法是向要素类表添加一个整型字段,然后将此字段的值计算为与 FID 或 OBJECTID 字段的值相等。 | Field |
Output_Spatial_Weights_Matrix_File | 输出网络空间权重矩阵 (.swm) 文件。 | File |
Input_Network | 将对输入要素类中各要素间空间关系进行定义的网络数据集。网络数据集通常表示街道网络,但也可能表示其他种类的交通网。网络数据集至少需要一个基于时间和一个基于距离的成本属性。 | Network Dataset Layer |
Impedance_Attribute | 在分析中被用作阻抗的成本单位类型。 | String |
Impedance_Cutoff (可选) | 为空间关系的 INVERSE 和 FIXED 概念化指定中断值。使用由 Impedance_Attribute 参数指定的单位输入此值。 零值表明应未应用任何阈值。此参数留空时,将根据输入要素类范围和要素数量计算默认阈值。 | Double |
Maximum_Number_of_Neighbors (可选) | 用于表示要为各要素查找的最大相邻要素数的整数。 | Long |
Barriers (可选) | 一种点要素类的名称,其中的要素用于表示阻塞的路口、封锁的道路、事故现场或网络中行程被阻止的其他位置。 | Feature Layer |
U-turn_Policy (可选) | 指定可选的 U 形转弯限制。
| String |
Restrictions [Restriction,...] (可选) | 限制列表。选中在计算空间关系时要遵守的限制。 | String |
Use_Hierarchy_in_Analysis (可选) | 指定是否在分析中使用等级。
| Boolean |
Search_Tolerance (可选) | 在网络数据集的 Input_Feature_Class 中查找要素时使用的搜索阈值。该参数包括搜索值和容差单位。 | Linear Unit |
Conceptualization_of_Spatial_Relationships (可选) | 指明如何指定与每个空间关系关联的加权方式。
| String |
Exponent (可选) | 用于 INVERSE Conceptualization_of_Spatial_Relationships 计算的参数。典型值是 1 或 2。在此指数值增大时,权重会随着距离的增加快速下降。 | Double |
Row_Standardization (可选) | 当要素的分布由于采样设计或施加的聚合方案而可能出现偏离时,建议使用行标准化。
| Boolean |
Travel_Mode (可选) | 用于分析的交通模式。Custom 为常用选择。要显示其他出行模式,必须使其显示在网络数据集参数指定的网络数据集中。 出行模式是在网络数据集上定义的,并会提供模型车、货车、步行或其他出行模式的参数的覆盖值。 | 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 脚本)
下面的独立 Python 脚本演示了如何使用 GenerateNetworkSpatialWeights 工具。
# Create a Spatial Weights Matrix based on Network Data
# Import system modules
import arcpy
# Set the geoprocessor object property to overwrite existing output
arcpy.gp.overwriteOutput = True
# Check out the ArcGIS Network Analyst extension (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