Summary
Constructs a spatial weights matrix file (.swm) using a network dataset, defining spatial relationships in terms of the underlying network structure.
Illustration
Usage
The network dataset can come from any of the following sources:
 A network dataset saved on a local drive or network. If your organization maintains its own street network datasets, you may already have access.
 Logistic and routing services hosted in ArcGIS Online or ArcGIS Enterprise. If you perform an analysis using ArcGIS Online, the solver references a highquality, worldwide network dataset stored in the ArcGIS Online cloud and consumes ArcGIS Online credits.
 Configured network datasets provided by ArcGIS StreetMap Premium. These network datasets are in SDC format and include North America, Latin America, Europe, the Middle East, Africa, Japan, Australia, and New Zealand.

This tool creates a spatial weights matrix file (*.swm) as output. Various tools in the Spatial Statistics and Space Time Pattern Mining toolboxes include a Conceptualization of Spatial Relationships parameter that allows you to use this file to define the spatial relationships of the features. Using a spatial weights matrix with a network data source allows you to define spatial relationships by their distance, travel time, and cost of travel.

The Input Feature Class must be points. Polygons and polylines are not supported by this tool.

The Unique ID Field parameter is used to relate the output of this tool to the input features. If you don't have a field with unique ID values, you can create one by adding a new integer field to your feature class table and calculating the field values to equal the FID or OBJECTID field. Because the FID and OBJECTID field values may change when you copy or edit a feature class, you cannot use these fields directly for the Unique ID Field parameter.

The number of neighbors associated with each feature is determined by the Maximum Number of Neighbors parameter and the three impedance cutoff parameters. The tool will use as many of the closest neighbors to the input feature as possible without exceeding the maximum number of neighbors or using any features whose impedance exceeds any of the cutoff values. Impedance can be defined by distance, travel time, or cost. The types of impedance that can be used depend on the properties of the network data source and the value of the Travel Mode parameter.

If your network dataset has a hierarchy, it is used to define the spatial relationships. The hierarchy classifies network edges into primary, secondary, and local roads. When using the hierarchy of the network to create spatial relationships among features, preference will be given to travel on primary roads more than secondary roads and secondary roads more than local roads.
When Inverse is specified for the Conceptualization of Spatial Relationships parameter, it is recommended that you perform row standardization by checking the Row Standardization parameter. If row standardization is not performed, different distance units will result in different spatial weights.

All input features are projected to the spatial reference of the network dataset prior to analysis, and the network spatial weights matrix file will be built in this spatial reference. It is recommended that you perform all subsequent analysis in this spatial reference to properly represent spatial relationships.
Syntax
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})
Parameter  Explanation  Data Type 
Input_Feature_Class  The point feature class representing locations on the network. For each feature, neighbors and weights are calculated and stored in the output spatial weights matrix file.  Feature Class 
Unique_ID_Field  An integer field containing a unique value for each feature in the input feature class. If you don't have a field with unique ID values, you can create one by adding an integer field to your feature class table and calculating the field values to equal the FID or OBJECTID field.  Field 
Output_Spatial_Weights_Matrix_File  The output network spatial weights matrix file (.swm) that will store the neighbors and weights for each input feature.  File 
Input_Network_Data_Source  The network dataset used to find neighbors of each input feature. Network datasets usually represent street networks but can also represent other kinds of transportation networks such as railroads or walking paths. The network dataset must include at least one attribute related to distance, travel time, or cost.  Network Data Source 
Travel_Mode  The mode of transportation for the analysis. A travel mode defines how a pedestrian, car, truck, or other medium of transportation moves through the network and represents a collection of network settings, such as travel restrictions and Uturn policies. An arcpy.na.TravelMode object and a string containing the valid JSON representation of a travel mode can also be used as input to the parameter.  String 
Impedance_Distance_Cutoff  The maximum impedance distance allowed for neighbors of a feature. Any feature whose distance is farther than this value will not be used as a neighbor. By default, no distance cutoff is used.  Linear Unit 
Impedance_Temporal_Cutoff (Optional)  The maximum impedance travel time allowed for neighbors of a feature. Any feature whose travel time is longer than this value will not be used as a neighbor. By default, no temporal cutoff is used.  Time Unit 
Impedance_Cost_Cutoff (Optional)  The maximum impedance cost allowed for neighbors of a feature. Any feature whose cost of travel is larger than this value will not be used as a neighbor. By default, no cost cutoff is used.  Double 
Maximum_Number_of_Neighbors (Optional)  An integer reflecting the maximum number of neighbors for each feature. The actual number of neighbors used for each feature may be smaller due to impedance cutoffs.  Long 
Time_of_Day (Optional)  The time of day traffic conditions will be considered in the analysis. Traffic conditions can impact the distance that can be traveled over a given time. If no date or time is provided, the analysis will not consider the impact of traffic. Instead of using a particular date, you can specify a day of the week using the following dates:
For example, to specify that travel should begin at 5:00 p.m. on Tuesday, specify the parameter value as 1/2/1900 5:00 PM.  Date 
Time_Zone (Optional)  Specifies the time zone for the Time_of_Day parameter.
 String 
Barriers (Optional)  The point features that represent blocked intersections, road closures, accident sites, or other locations where travel is blocked along the network.  Feature Layer 
Search_Tolerance (Optional)  The maximum distance used to assign each input feature to a location on the network. If any of the input points do not fall exactly on a line of the network, they will be assigned to the closest location on the network for the analysis. However, if the feature is farther than the search tolerance value from any location on the network, it will not be assigned to the network and will not be included in the analysis.  Linear Unit 
Conceptualization_of_Spatial_Relationships (Optional)  Specifies how weights will be defined for each neighbor.
 String 
Exponent (Optional)  The exponent used when INVERSE is specified for the Conceptualization_of_Spatial_Relationships parameter. The weights assigned to each neighbor are calculated by taking the inverse distance, time, or cost to the power of the exponent. The default value is 1, and the value must be between 0.01 and 4. Weights drop off more rapidly as the exponent increases.  Double 
Row_Standardization (Optional)  Specifies whether row standardization will be applied. Row standardization is recommended when the locations of the input points are potentially biased due to sampling design or an imposed aggregation scheme. It is also recommended that you standardize rows when weighting neighbors based on inverse distance, time, or cost.
 Boolean 
Code sample
The following Python script demonstrates how to use the GenerateNetworkSWM tool:
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")
The following Python script demonstrates how to use the GenerateNetworkSWM tool:
# 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())
Environments
Licensing information
 Basic: Requires Network Analyst
 Standard: Requires Network Analyst
 Advanced: Requires Network Analyst
Related topics
 An overview of the Modeling Spatial Relationships toolset
 How Geographically Weighted Regression (GWR) works
 Spatial Autocorrelation (Global Moran's I)
 High/Low Clustering (GetisOrd General G)
 Cluster and Outlier Analysis (Anselin Local Moran's I)
 Hot Spot Analysis (GetisOrd Gi*)
 Grouping Analysis
 Spatial weights
 Modeling spatial relationships
 How Generate Network Spatial Weights works
 Generate Spatial Weights Matrix
 What is a network dataset?
 Find a geoprocessing tool