构建网络 (Network Analyst)

摘要

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

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

使用情况

  • 如果在构建网络时遇到构建错误,则将显示一条警告消息。 请检查并解决这些错误,因为这些错误指示可能存在阻止网络按预期运行的潜在问题。

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

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

参数

标注说明数据类型
输入网络数据集

要构建的网络数据集。

Network Dataset Layer
强制完整构建
(可选)

指定是将构建完整网络,还是仅构建脏区中的部分网络。

  • 选中 - 将构建完整网络。
  • 未选中 - 仅生成自上次构建以来已更改的网络部分。 这是默认设置。
Boolean

派生输出

标注说明数据类型
更新的输入网络数据集

更新后的网络数据集。

Network Dataset Layer

arcpy.management.BuildNetwork(in_network_dataset, {force_full_build})
名称说明数据类型
in_network_dataset

要构建的网络数据集。

Network Dataset Layer
force_full_build
(可选)

指定是将构建完整网络,还是仅构建脏区中的部分网络。

  • FORCE_FULL_BUILD将构建完整网络。
  • NO_FORCE_FULL_BUILD仅生成自上次构建以来已更改的网络部分。 这是默认设置。
Boolean

派生输出

名称说明数据类型
out_network_dataset

更新后的网络数据集。

Network Dataset Layer

代码示例

BuildNetwork 示例 1(Python 窗口)

使用所有参数运行此工具

network = "C:/Data/Paris.gdb/Transportation/ParisMultimodal_ND"
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))