构建网络 (Network Analyst)

描述

重新构建网络数据集的网络连通性和属性信息。对参与源要素类中的属性或要素进行编辑后,必须重新构建网络数据集。如果编辑的是源要素,该工具将仅对执行了编辑操作的区域建立网络连通性以便加快构建过程;但如果编辑的是网络属性,将会重新构建整个范围的网络数据集。对于大型网络数据集来说,这个操作可能会花费很长时间。

了解有关需要重新构建的网络数据集编辑的详细信息

使用方法

  • 如果在构建网络时遇到任何构建错误,该工具将发出警告。由于这些错误表示可能存在阻止网络按预期运行的潜在问题,因此应对其进行查看和检查。

    了解有关网络构建错误的详细信息

  • 在构建网络数据集之前,网络数据集和参与源要素类需要一个排他方案锁。这意味着,没有人能够编辑参与要素类。如果无法获取独占方案锁,则会出现错误。

语法

arcpy.na.BuildNetwork(in_network_dataset)
参数说明数据类型
in_network_dataset

要构建的网络数据集。

Network Dataset Layer

派生输出

名称说明数据类型
out_network_dataset

更新后的网络数据集。

网络数据集图层

代码示例

BuildNetwork 示例 1(Python 窗口)

使用所有参数执行此工具。

network = "C:/Data/Paris.gdb"
arcpy.na.BuildNetwork(network)
BuildNetwork 示例 2(独立脚本)

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

# Name: BuildNetwork_ex02.py
# Description: Build a network dataset.
# Requirements: Network Analyst Extension 

#Import system modules
import arcpy
from arcpy import env
import sys
import os
import shutil

try:
    #Check out Network Analyst license if available. Fail if the Network Analyst license is not available.
    if arcpy.CheckExtension("network") == "Available":
        arcpy.CheckOutExtension("network")
    else:
        raise arcpy.ExecuteError("Network Analyst Extension license is not available.")
    
    #Set environment settings
    env.workspace = "C:/data/SanFrancisco.gdb"
    
    #Set local variables
    inNetworkDataset = "Transportation/Streets_ND"
    
    #Build the network dataset
    arcpy.BuildNetwork_na(inNetworkDataset)
    
    #If there are any build errors, they are recorded in a BuildErrors.txt file
    #present in the system temp directory. So copy this file to the directory
    #containing this script
    
    #First get the path to the system temp directory
    tempDir = os.environ.get("TEMP")
    if tempDir:
        shutil.copy2(os.path.join(tempDir,"BuildErrors.txt"),sys.path[0])
    
    print("Script completed successfully.")

except Exception as e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print("An error occurred on line %i" % tb.tb_lineno)
    print(str(e))

许可信息

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

相关主题