描述
创建服务区网络分析图层,设置分析属性及求解分析。此工具非常适用于在 web 上设置服务区地理处理服务。网络服务区是指包含从一个或多个设施点的给定距离或行程时间之内可到达的所有街道的区域。
服务区通常用于显示和测量可达性。例如,杂货店周围 3 分钟的行驶时间面可以确定能够在 3 分钟内到达的杂货店以及更有可能在此购物的居民。
使用方法
此工具对话框将各种可选参数分组为以下六个类别,以便您能更轻松地对其进行管理:
- 高级分析
- 障碍
- 自定义出行模式
- 网络位置
- 面生成
- 服务能力
语法
arcpy.na.GenerateServiceAreas(Facilities, Break_Values, Break_Units, Network_Dataset, Service_Areas, {Travel_Direction}, {Time_of_Day}, {UTurn_Policy}, {Point_Barriers}, {Line_Barriers}, {Polygon_Barriers}, {Time_Attribute}, {Time_Attribute_Units}, {Distance_Attribute}, {Distance_Attribute_Units}, {Use_Hierarchy_in_Analysis}, {Restrictions}, {Attribute_Parameter_Values}, {Maximum_Snap_Tolerance}, {Exclude_Restricted_Portions_of_the_Network}, {Feature_Locator_WHERE_Clause}, {Polygons_for_Multiple_Facilities}, {Polygon_Overlap_Type}, {Detailed_Polygons}, {Polygon_Trim_Distance}, {Polygon_Simplification_Tolerance}, {Maximum_Facilities}, {Maximum_Number_of_Breaks}, {Maximum_Features_Affected_by_Point_Barriers}, {Maximum_Features_Affected_by_Line_Barriers}, {Maximum_Features_Affected_by_Polygon_Barriers}, {Maximum_Break_Time_Value}, {Maximum_Break_Distance_Value}, {Force_Hierarchy_beyond_Break_Time_Value}, {Force_Hierarchy_beyond_Break_Distance_Value}, {Save_Output_Network_Analysis_Layer}, {Time_Zone_for_Time_of_Day}, {Travel_Mode}, {Overrides})
参数 | 说明 | 数据类型 |
Facilities | 在其周围生成服务区的设施点。 设施点要素集具有三个属性: ObjectID: 系统管理的 ID 字段。 Shape: 指示网络分析对象地理位置的几何字段。 Name: 设施点的名称。如果名称为空,则求解时将自动生成一个名称。 | Feature Set |
Break_Values | 指定为每个设施点生成的服务区面的大小和数量。单位由“中断单位”值决定。 当生成服务区工具运行时,以下参数之间会发生值得注意的交互:中断值、中断单位以及时间属性或距离属性。中断值和中断单位共同定义了服务区在设施点周围延伸的范围和距离。时间属性和距离属性参数分别定义了一个网络成本属性。仅使用这两个成本属性中的一个,求解程序选择使用的成本属性与中断单位值相对应;换言之,如果指定一个基于时间的中断单位值(例如秒或分钟),此工具将使用时间属性参数中定义的成本属性进行求解。如果指定一个基于距离的中断单位值(例如公里或英里),该工具将使用距离属性参数中定义的成本属性。 可以设置多个面中断来为每个设施点创建同心服务区。例如,要查找每个设施点的 2 英里、3 英里及 5 英里服务区,请输入 2 3 5,且各个数值之间用空格进行分隔。将中断单位设为英里,并确保已为距离属性参数选择了基于距离的网络属性。 | String |
Break_Units | 中断值参数的单位。
生成服务区工具根据您在此处指定的单位是基于时间还是基于距离,选择是否使用在时间属性或距离属性参数中指定的网络成本属性。 当中断单位值与对应的时间或距离成本属性的单位不同时,此工具将进行必要的单位转换。 | String |
Network_Dataset | 将在其中执行分析的网络数据集。网络数据集通常表示街道网络,但也可能表示其他种类的交通网。网络数据集至少需要一个基于时间和一个基于距离的成本属性。 | Network Dataset Layer |
Service_Areas | 输出工作空间及输出要素的名称。此工作空间必须已经存在。默认的输出工作空间为 in_memory。 | Feature Class |
Travel_Direction (可选) | 选择用于生成服务区面的行程方向是朝向还是远离设施点。
行程方向可以改变面的形状,因为街道两侧的阻抗可能不同,或者可能存在单向街道。方向的选择取决于服务区分析的特性。例如,应该在远离设施点的方向上创建比萨外卖店的服务区,而医院的服务区应该创建在朝向设施点的方向上,因为对于病人而言,重要行程时间是前往医院的时间。 | String |
Time_of_Day (可选) | 离开或到达设施点的时间。对该值的解释取决于行驶方向是朝向设施点还是远离设施点。
您的网络数据集必须包括此参数的流量数据才能产生作用。 重复求解相同的分析问题,但使用不同的时间参数值,这样您就会看到设施点的到达时间随时间的变化。例如,消防站周围的 5 分钟服务区在大清早时可能变得大一点,而在早高峰期消失,上午晚些时候服务区又扩大,并在一天中都保持这样。 | Date |
UTurn_Policy (可选) | 交汇点的 U 形转弯策略。允许 U 形转弯表示求解程序可以在交汇点处转向并沿同一街道往回行驶。考虑到交汇点表示街道交叉路口和死角,不同的车辆可以在某些交汇点转弯,而在其他交汇点则不行 - 这取决于交汇点是交叉路口还是死角。为适应此情况,U 形转弯策略参数由连接到交汇点的边数隐性指定,这称为交汇点价。此参数可接受的值如下所列;每个值的后面是根据交汇点价对其含义的描述。
将出行模式(Python 中的 Travel_Mode)设置为除自定义外的其他值时会覆盖此参数的值。 | String |
Point_Barriers (可选) | 指定点障碍,并将其分为两种类型:禁止型点障碍和增加成本型点障碍。它们可以暂时限制网络上的穿越或在网络的点上增加阻抗。点障碍由要素集定义,为点要素指定的属性值决定它们是禁止型障碍还是增加成本型障碍。下面列出并描述了属性表中的字段。 ObjectID: 系统管理的 ID 字段。 Shape: 指示网络分析对象地理位置的几何字段。 Name: 障碍的名称。 BarrierType: 指定障碍的存在将完全禁止通行还是在通行时增加成本。共有两个选项:
将值 0 用于禁止型值,将 2 用于增加成本型值。 AdditionalCost: AdditionalCost 指示服务区穿越障碍时增加的阻抗。 此字段值的单位与为中断单位指定的单位相同。 | Feature Set |
Line_Barriers (可选) | 指定线障碍,暂时限制穿越障碍。线障碍由要素集定义。下面列出并描述了属性表中的字段。 ObjectID: 系统管理的 ID 字段。 Shape: 指示网络分析对象地理位置的几何字段。 Name: 障碍的名称。 | Feature Set |
Polygon_Barriers (可选) | 指定面障碍,并将其分为两种类型:禁止型面障碍和调整成本型面障碍。它们会暂时限制穿越所覆盖的网络部分或调整阻抗。面障碍由要素集定义,为面要素指定的属性值决定它们是禁止型障碍还是调整成本型障碍。下面列出并描述了属性表中的字段。 ObjectID: 系统管理的 ID 字段。 Shape: 指示网络分析对象地理位置的几何字段。 Name: 障碍的名称。 BarrierType: 指定障碍的存在将完全禁止通行还是按比例增加行程成本。共有两个选项:
将值 0 用于禁止型值,将 1 用于调整成本型值。 ScaledCostFactor: ScaledCostFactor 指示服务区穿越障碍时成倍增加的阻抗。 | Feature Set |
Time_Attribute (可选) | 定义中断单位值为时间单位时要使用的网络成本属性。 当中断单位值与此处定义的成本属性单位不同时,此工具进行必要的时间单位转换。换言之,中断和网络成本属性的时间单位不必相同。 将出行模式(Python 中的 Travel_Mode)设置为除自定义外的其他值时会覆盖此参数的值。 | String |
Time_Attribute_Units (可选) | 时间属性参数指定的网络成本属性的单位。这只是一个信息参数,只有直接编辑网络数据集才能进行更改。而且也无需更改,因为中断值单位与成本属性之间的单位转换是自行处理的。 将出行模式(Python 中的 Travel_Mode)设置为除自定义外的其他值时会覆盖此参数的值。 | String |
Distance_Attribute (可选) | 定义中断单位值为距离单位时要使用的网络成本属性。 当中断单位值与此处定义的成本属性单位不同时,此工具进行必要的距离单位转换。换言之,中断和网络成本属性的距离单位不必相同。 将出行模式(Python 中的 Travel_Mode)设置为除自定义外的其他值时会覆盖此参数的值。 | String |
Distance_Attribute_Units (可选) | 距离属性参数指定的网络成本属性的单位。这只是一个信息参数,只有直接编辑网络数据集才能进行更改。而且也无需更改,因为中断值单位与成本属性之间的单位转换是自行处理的。 将出行模式(Python 中的 Travel_Mode)设置为除自定义外的其他值时会覆盖此参数的值。 | String |
Use_Hierarchy_in_Analysis (可选) |
如果未在用于执行分析的网络数据集中定义等级属性,该参数将不可用。 您可以使用在距离范围外强制分级参数强制求解程序应用等级,即使在分析中应用等级设置为 false。 除非将出行模式设置为自定义,否则会忽略此参数。对自定义步行模式进行建模时建议关闭等级,这是因为该等级专用于机动车辆。
如果未在用于执行分析的网络数据集中定义等级属性,该参数将不可用。在这种情况下,使用 "#" 作为参数值。 即使 Use_Hierarchy_in_Analysis 设置为 False,您也可以使用 Force_Hierarchy_Beyond_Distance 参数进行强制求解来应用等级。 除非将 Travel_Mode 设置为 CUSTOM,否则会忽略此参数。对自定义步行模式进行建模时建议关闭等级,这是因为该等级专用于机动车辆。 | Boolean |
Restrictions [restriction,...] (可选) | 指示求解时应遵守的网络约束条件属性。 将出行模式(Python 中的 Travel_Mode)设置为除自定义外的其他值时会覆盖此参数的值。 | String |
Attribute_Parameter_Values (可选) | 指定具有参数的网络属性的参数值。记录集具有两个共同唯一识别参数的列以及另一个指定参数值的列。 将出行模式(Python 中的 Travel_Mode)设置为除自定义外的其他值时会覆盖此参数的值。 属性参数值记录集具有关联属性。下面列出并说明了属性表中的所有字段。 ObjectID: 系统管理的 ID 字段。 AttributeName: 网络属性的名称,其属性参数由表行设置。 ParameterName: 属性参数的名称,其值由表行设置。(无法使用此工具更新“对象”类型参数。) ParameterValue: 您希望的属性参数值。如果未指定值,则属性参数将被设置为空。 | Record Set |
Maximum_Snap_Tolerance (可选) | 最大捕捉容差是指在网络上定位或重新定位一个点时 Network Analyst 搜索的最远距离。搜索会寻找适合的边或交汇点,并把点捕捉到最近的边或交汇点。如果在最大捕捉容差内没有找到合适的位置,对象将标记为无法定位。 | Linear Unit |
Exclude_Restricted_Portions_of_the_Network (可选) |
| Boolean |
Feature_Locator_WHERE_Clause (可选) | 用于选择源要素子集的 SQL 表达式,该子集对可以定位设施点的网络元素设定了限制。此参数的语法由两部分组成:第一部分为源要素类名称(后接一个空格),第二部分为 SQL 表达式。要为两个或多个源要素类编写 SQL 表达式,请用分号分隔。 例如,为确保设施点不定位在限制出入的公路上,编写一个类似于下面所列的 SQL 表达式,排除这些源要素:"Streets" "FUNC_CLASS not in('1', '2')"。 注意,加载时,障碍将忽略要素定位器 WHERE 子句。 | String |
Polygons_for_Multiple_Facilities (可选) | 选择当分析中存在多个设施点时生成服务区面的方式。
| String |
Polygon_Overlap_Type (可选) | 指定该选项,将同心服务区面创建为圆或环。仅当为这些设施点指定多个中断值时,此选项才可用。
| String |
Detailed_Polygons (可选) | 指定是要创建详细面还是概化面。
| Boolean |
Polygon_Trim_Distance (可选) | 指定对服务区面进行修剪的距离范围。这在您的数据非常稀疏且不需要服务区覆盖大片不含要素的区域时十分有用。 此参数没有值或值为 0 时,会指定不应对服务区面进行修剪。使用等级时,将忽略此参数值。 | Linear Unit |
Polygon_Simplification_Tolerance (可选) | 指定面几何的简化程度。 简化仍将保留面的关键点,以定义面的基本形状和移除其他点。所指定的简化距离为简化面偏离原始面时允许的最大偏移。对面进行简化将减少折点的数量,并且往往能够减少绘制时间。 | Linear Unit |
Maximum_Facilities (可选) | 限制可向服务区分析中添加的设施点数。 此参数可帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Number_of_Breaks (可选) | 限制可向服务区分析中添加的中断数。 此参数可帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Features_Affected_by_Point_Barriers (可选) | 限制点障碍影响的要素数量。 此参数可帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Features_Affected_by_Line_Barriers (可选) | 限制线障碍影响的要素数量。 此参数可帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Features_Affected_by_Polygon_Barriers (可选) | 限制面障碍影响的要素数量。 此参数可帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Break_Time_Value (可选) | 限制在求解基于时间的服务区时,中断值参数的最大值。 此参数可帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Double |
Maximum_Break_Distance_Value (可选) | 限制在求解基于距离的服务区时,中断值参数的最大值。 此参数可帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Double |
Force_Hierarchy_beyond_Break_Time_Value (可选) | 指定求解程序将在中断值后强制分级的中断值,即使在求解基于时间的服务区时未启用等级也是如此。 使用网络等级时求解高中断值的服务区,相比不使用等级求解同一服务区进行的处理往往更少。此参数可帮助您管理求解时发生的处理量。 空值表示决不会强制分级,并且在分析中应用等级参数的值始终适用。如果输入网络数据集不支持等级,则为该参数指定值会导致错误。在这种情况下,应使用空值。 | Double |
Force_Hierarchy_beyond_Break_Distance_Value (可选) | 指定求解程序将在中断值后强制分级的中断值,即使在求解基于距离的服务区时未启用等级也是如此。 使用网络等级时求解高中断值的服务区,相比不使用等级求解同一服务区进行的处理往往更少。此参数可帮助您管理求解时发生的处理量。 空值表示决不会强制分级,并且在分析中应用等级参数的值始终适用。如果输入网络数据集不支持等级,则为该参数指定值会导致错误。在这种情况下,应使用空值。 | Double |
Save_Output_Network_Analysis_Layer (可选) |
在任何一种情况下,均返回带有服务区面的要素类。不过,服务器管理员也可能希望选择输出一个网络分析图层,以便可以使用 ArcGIS Desktop 环境中的 Network Analyst 控件调试工具的设置和结果。这会使调试过程变得更加容易。 在 ArcGIS Desktop 中,网络分析图层的默认输出位置位于临时文件夹内。可通过评估 arcpy.env.scratchFolder 地理处理环境的值来确定临时文件夹的位置。输出网络分析图层存储为 LYR 文件,其名称以 _ags_gpna 开头,后跟字母数字 GUID。 | Boolean |
Time_Zone_for_Time_of_Day (可选) | 指定时区或时间参数的时区。
无论时间的时区如何设置,当时间为非空值并且多个设施点的面设置为创建合并或非重叠面时,所有设施点必须处于同一时区。 | String |
Travel_Mode (可选) | 选择用于分析的运输模式。CUSTOM 为常用选择。要显示其他出行模式名称,必须使其显示在 Network_Dataset 参数指定的网络数据集中。(arcpy.na.GetTravelModes 函数提供了网络数据集上配置的出行模式对象的字典,name 属性返回出行模式对象的名称。) 出行模式是在网络数据集上定义的,并会提供模型车、货车、步行或其他出行模式的参数的覆盖值。在此处选择出行模式后,您便无需为以下参数提供值,这些参数值会被网络数据集中指定的值覆盖:
| String |
Overrides (可选) | 可用于影响求解程序行为的其他设置。 使用形式 {"overrideSetting1" : "value1", "overrideSetting2" : "value2"} 在 JavaScript 对象表示法 (JSON) 中指定此参数的值。覆盖设置名称始终以双引号括起。该值可以是数字、布尔值或字符串。 | String |
派生输出
名称 | 说明 | 数据类型 |
Output_Service_Areas | 给定行驶时间或行驶距离内,可从输入位置到达的区域。 | 要素集 |
Solve_Succeeded | 用于确定求解服务区分析是否成功。 | 布尔型 |
Output_Network_Analysis_Layer | 网络分析图层可用于在地图中进行进一步分析或调试,其属性可在工具参数中进行配置。 | 文件 |
代码示例
GenerateServiceAreas 示例 1(Python 窗口)
使用 Python 窗口中的所需参数执行此工具。
import arcpy
facilities = arcpy.FeatureSet()
facilities.load("FireStations")
arcpy.na.GenerateServiceAreas(facilities, "1 2 3", "Minutes", "Streets_ND",
"in_memory\\FireStationServiceAreas")
GenerateServiceAreas 示例 2(独立脚本)
以下独立 Python 脚本演示了如何使用 GenerateServiceAreas 确定商店的到达时间随时间的变化。该脚本显示了如何在一天的不同时段在商店位置周围生成 5 分钟服务区。以披萨店为例,在了解 5 分钟内可从商店达到的区域如何根据当前交通状况变化时,这类分析非常有用。
# Name: GenerateServiceAreas_Workflow.py
# Description: Generate a 5 minute service area around a store location at
# different times in a day. Such analysis can be useful, for example
# for a pizza store, to see how the area that can be reached within
# 5 minutes from the store changes based on the current traffic
# conditions.
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
import datetime
try:
#Check out the Network Analyst extension license
arcpy.CheckOutExtension("Network")
#Set environment settings
env.workspace = "C:/data/SanFrancisco.gdb"
env.overwriteOutput = True
#Set local variables
inNetworkDataset = "Transportation/Streets_ND"
impedanceAttribute = "TravelTime"
breakValues = "5"
breakUnits = "Minutes"
inFacilities = "Analysis/ExistingStore"
outGeodatabase = "C:/data/output/ServiceAreaOutput.gdb"
serviceArea = "in_memory\\ServiceAreas"
dateFieldName = "StartTime"
nameField = "Name"
#use today at 8 AM as the start time and then increment it by one hour
startTime = datetime.datetime(1899,12,30,8,0,0)
#Create a new feature set with same schema as Facilities parameter in
#Generate Service Areas tool. Load the feature from the ExistingStore
#feature class in the feature set
facilities = arcpy.GetParameterValue("GenerateServiceAreas_na",0)
facilities.load(inFacilities)
#Create an empty feature class with same spatial reference as the
#network dataset and a Date field called StartTime and a text field called Name
outServiceAreas = arcpy.management.CreateFeatureclass(outGeodatabase, "ServiceAreas",
"POLYGON","","","",
inNetworkDataset).getOutput(0)
arcpy.management.AddField(outServiceAreas, dateFieldName, "DATE")
arcpy.management.AddField(outServiceAreas, nameField, "TEXT")
#Open an insert cursor on the feature class to add new polygons
cursor = arcpy.da.InsertCursor(outServiceAreas, ("SHAPE@", nameField,
dateFieldName))
#Geneate a 5 minute service area around the store at every one hour interval
#from 8 AM to 8 PM. Copy the output service area to a new feature class
for i in range(1,14):
timeFormat = startTime.time().strftime("%I %p")
print "Generating {0} {1} service area at {2}".format(breakValues,breakUnits,
timeFormat)
arcpy.na.GenerateServiceAreas(facilities,breakValues,breakUnits,
inNetworkDataset, serviceArea, "TRAVEL_FROM",
startTime, Time_Attribute=impedanceAttribute)
#Get the shape from the output service area so that it can be inserted
#in the feature class
with arcpy.da.SearchCursor(serviceArea,("SHAPE@", nameField)) as inputRows:
row = inputRows.next()
cursor.insertRow((row[0],row[1],startTime))
startTime = startTime + datetime.timedelta(seconds=3600)
del cursor
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