GenerateServiceAreas (ServiceAreas)
摘要
该 ArcGIS Online 服务会在设施点周围确定网络服务区。网络服务区是指包含从一个或多个设施点的给定距离或行程时间之内可到达的所有街道的区域。例如,某一设施点的 10 分钟服务区包含从该设施点出发 10 分钟内可以到达的所有街道。
服务区通常用于显示和测量可达性。例如,杂货店周围三分钟的行驶时间面可以确定能够在三分钟内到达的杂货店以及更有可能在此购物的居民。
插图
用法
-
如果“中断单位”参数的值设置为时间单位,则工具会创建行驶时间区域。同样,如果“中断单位”为距离单位,工具会创建行驶距离区域。工具可以生成最长 300 分钟或 300 英里(482.80 千米)的服务区。当生成详细面时,最大服务区大小限制为 15 分钟和 15 英里(24.14 千米)。
为成功执行该工具,您至少需要指定一个设施点。最多可加载 1,000 个设施点。
最多可以添加 250 个点障碍。您可以添加任意数量的线障碍或面障碍,但线障碍的相交数不能超过 500 个街道要素,面障碍的相交数不能超过 2,000 个要素。
求解时可选择使用道路等级以更快地生成结果,但解决方案可能不够精确。
无论是否选中“应用等级”参数 (True),当最大中断值超过 240 分钟或 240 英里(386.24 千米)时,将始终使用等级。当输出服务区没有重叠或概化时,此限制降低到 15 分钟和 15 英里(24.14 千米)。
如果输入点与其最近的可穿过街道之间的距离大于 12.42 英里(20 千米),则将从分析中排除该点。
语法
参数 | 说明 | 数据类型 |
Facilities |
在其周围生成服务区的设施点。最多可加载 1,000 个设施点。 设施点要素集具有一个关联的属性表。下面列出并说明了属性表中的所有字段。 ObjectID:系统管理的 ID 字段。 名称:设施点的名称。如果未指定名称,则求解过程中会自动生成一个名称。 当“多个设施点的面”参数设置为“叠置”或“不叠置”时,输入设施点的所有字段都包含在输出面中。输入设备点的 ObjectID 字段会传递到输出面的 FacilityOID 字段中。 | Feature Set |
Break_Values |
指定为每个设施点生成的服务区面的大小和数量。单位由“中断单位”值决定。 可以设置多个面中断来为每个设施点创建同心服务区。例如,要查找每个设施点的 2 英里、3 英里及 5 英里服务区,请输入 2 3 5,各个数值之间用空格进行分隔,将设置“中断单位”设置为“英里”。所指定中断值的数量没有限制。 最大中断值的大小不能超过 300 分钟或 300 英里(482.80 千米)。当生成详细面时,最大服务区大小限制为 15 分钟和 15 英里(24.14 千米)。 | String |
Break_Units |
“中断值”参数的单位。 此参数单位的选择决定了工具通过测量行驶距离还是行驶时间来创建服务区。选择时间单位以测量行驶时间。要测量行驶距离,则请选择距离单位。选择的单位还确定工具在结果中以哪种单位报告总行驶时间或距离。这些单位包括:
| String |
Analysis_Region (可选) |
指定要进行分析的区域。如果未对此参数指定值,工具会基于输入点的位置自动计算区域名称。为加快工具执行,建议设置区域名称。要指定区域,请使用以下值之一:
| String |
Travel_Direction |
指定用于生成服务区面的行程方向是朝向还是远离设施点。
行程方向可以改变面的形状,因为街道两侧的阻抗可能不同,或者可能存在单向约束,例如单行道。方向的选择取决于服务区分析的特性。例如,应该在远离设施点的方向上创建比萨外卖店的服务区,而医院的服务区应该创建在朝向设施点的方向上。 | String |
Time_of_Day |
离开或到达设施点的时间。对该值的解释取决于行驶方向是朝向设施点还是远离设施点。
可以使用时间的时区参数指定该时间和日期是参考 UTC 还是设施点或事件点所在时区。 重复求解相同的分析问题,但使用不同的时间参数值,这样您就会看到设施点的到达时间随时间的变化。例如,消防站周围的五分钟服务区在大清早时可能变得大一点,而在早高峰期消失,上午晚些时候服务区又扩大,并在一天中都保持这样。 | Date |
Use_Hierarchy |
指定是否应在查找设施点和事件点之间的最佳路径时使用等级。
无论是否选中“应用等级”参数 (True),当最大中断值超过 240 分钟或 240 英里(386.24 千米)时,将始终使用等级。 | Boolean |
UTurn_at_Junctions |
使用此参数限制或允许服务区在交汇点处 U 形转弯。为理解此参数值,请考虑下列术语:交汇点是在路段的尽头且可能与其他一条或多条路段相连的点;伪交汇点是指两条街道确实在此处相连的点;交叉点是指三条或更多街道在此处相连的点;死角是指一条不与其他路段相连的路段的尽头。鉴于这些信息,参数可能有下列值:
| String |
Polygons_for_Multiple_Facilities |
选择当分析中存在多个设施点时生成服务区面的方式。
在使用“叠置”或“非叠置”时,输入设施点的所有字段都包含在输出面中(输入 ObjectID 字段中的值传递到输出面的 FacilityOID 字段这种情况除外)。按中断值合并时 FacilityOID 字段为空,输入字段不包含在输出中。 | String |
Polygon_Overlap_Type |
指定该选项,将同心服务区面创建为圆或环。仅当为这些设施点指定多个中断值时,此选项才可用。
| String |
Detailed_Polygons (可选) |
指定是要创建详细面还是概化面。
如果是具有类似格网街道网络的市区设施点,则概化服务区和详细服务区之间的差别最小。然而,如果设施点位于一个包含山区道路和农村道路的区域,则详细服务区可能明显会比概化服务区显示更多的精确结果。 仅当“中断值”参数内指定的最大值小于或等于 15 分钟或 15 英里(24.14 千米)时,工具支持生成详细面。 | Boolean |
Polygon_Trim_Distance |
指定对服务区面进行修剪的距离范围。当您在街道网络稀疏的地点查找服务区且不需要服务区覆盖大片没有街道要素的区域时,此选项很有用。 默认值是 100 米。此参数没有值或值为 0 时,会指定不应对服务区面进行修剪。使用等级时,将忽略此参数值。 | Linear unit |
Polygon_Simplification_Tolerance |
指定面几何的简化程度。 简化仍将保留面的关键折点,以定义面的基本形状和移除其他折点。所指定的简化距离为简化面边界可偏离原始面边界的最大偏移。对面要素进行简化将减少折点的数量,并且往往能够减少绘制时间。 | Linear unit |
Point_Barriers | 指定一个或多个点作为临时限制,或显示在基础街道上行驶可能需要的附加时间或距离。例如,点障碍可用来显示一棵沿街倒下的树或是铁路道口上的时间延迟。 工具限制了可添加为障碍的点不得超过 250 个。 指定点障碍后,可通过使用特性为每个事件点设置属性,例如其名称或障碍类型。可通过以下属性指定点障碍: 名称:障碍的名称。 BarrierType:指定点障碍是完全限制通行还是增加通过障碍时的时间或距离。此特性值可指定为以下整数之一(请使用数值代码而非括号中的名称):
Additional_Time:表示穿越障碍时会增加的行驶时间。此字段仅适用于增加成本型障碍且仅在“中断单位”值基于时间时适用。此字段值必须大于或等于零,并且其单位与“中断单位”参数中指定的单位相同。 Additional_Distance:表示穿越障碍时会增加的距离。此字段仅适用于增加成本型障碍且仅在“中断单位”值基于距离时适用。字段值必须大于或等于零,并且其单位与“中断单位”参数中指定的单位相同。 | Feature Set |
Line_Barriers (可选) |
指定一条或多条线,这些线相交的街道上禁止通行。例如,线障碍可用于对阻塞若干个路段交通的游行或抗议队伍进行建模。线障碍还可用于快速隔离多条道路使其禁止被穿越,从而在可能的路径中去除不符合要求的街道网络部分。 工具限制了您可以使用“线障碍”参数限制的街道数量。可指定为线障碍的线数没有限制时,所有线的相交街道的合并数不能超过 500。 指定线障碍时,可使用如下特性为每个障碍设置名称属性: 名称:障碍的名称。 | Feature Set |
Polygon_Barriers | 指定面,该面完全限制通行或按比例调整行驶在面相交的街道上所需的行驶时间或距离。 服务限制了您可以使用“面障碍”参数限制的街道数量。可指定为面障碍的面数没有限制时,所有面的相交街道的合并数不能超过 2,000。 指定面障碍时,可通过使用特性为每个面障碍设置属性,例如名称或障碍类型。可通过以下属性指定面障碍: 名称:障碍的名称。 BarrierType:指定障碍的存在会完全禁止通行还是按比例调整行程时间或距离。该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):
ScaledTimeFactor:它是与障碍相交街道的行驶时间要乘以的因子。此字段仅适用于调整成本型障碍且仅在“中断单位”值基于时间时适用。字段值必须大于零,并且其单位与“中断单位”参数中指定的单位相同。 ScaledDistanceFactor:它是与障碍相交街道的距离要乘以的因子。此属性仅适用于调整成本型障碍且仅在“中断单位”值基于距离时适用。该属性值必须大于零。 | Feature Set |
Restrictions |
确定服务区时指定工具应该应用哪些行驶限制。 限制可表示行驶偏好或要求。大多数情况下,限制条件会导致道路禁行。例如,使用“避开收费公路”限制的结果是,仅在访问某一事件点或设施点必须借道收费公路时,才会生成一条包含该收费公路的路径。高度限制则使您可以绕开低于车辆高度的间隙。如果车辆上装载着腐蚀性物质,使用“禁止任何危险物品”限制可以防止在标记着运输腐蚀性材料为非法行为的路上运输这些材料。 生成详细面时,禁止的道路不在服务区面的覆盖范围内,并可能导致面具有无法穿越的孔洞;而生成一般或等级服务区时,由可穿越的道路完全包围的受限道路将在简化服务区面的覆盖范围内。 以下是可用约束条件的列表和简短描述。 注: 某些限制需要指定一个额外值以供它们使用。该值需要与限制名称和用于限制的特定参数相关联。如果在“属性参数值”参数中的 AttributeName 列显示限制名称,则可识别限制。发现可穿越道路时,为了正确使用约束条件,应在“属性参数值”参数中指定 ParameterValue 字段。 注: 一些限制只在某些国家/地区受到支持;下表按区域显示这些限制的可用性。关于在某区域内可用性有限的约束条件,通过在网络分析服务的数据覆盖网页上查看“国家/地区列表”部分中的表,可以检查该约束条件在特定国家/地区是否可用。如果一个国家/地区具有 Logistics Attribute 列的 Yes 值,则该国家/地区支持具有区域可选性的限制。如果您指定的约束条件名称在事件点所在的国家/地区不可用,该服务会忽略无效约束条件。该服务还会忽略“约束条件用法”参数值为 0 到 1(请参阅“属性参数值”参数)的约束条件。它会禁止“约束条件用法”参数值大于 0 的所有约束条件。 该工具支持以下约束条件:
| String |
Attribute_Parameter_Values (可选) | 指定某些限制需要的其他值,例如“重量限制”要求的车辆重量。您也可以使用属性参数指定限制对使用限制的行程是禁止、避免还是首选。如果该限制要避免或首选道路,您可以使用此参数进一步指定要避免或首选的程度。例如,您可以选择从不使用收费公路,尽可能的避开它们,或甚至格外倾向于它们。 如果指定了要素类的“属性参数值”参数,则要素类上的字段名称必须如下所示与字段相匹配: AttributeName:列出限制名称。 ParameterName:列出与限制相关的参数名称。限制根据其用途可有一个或多个 ParameterName 字段值。 ParameterValue:工具在评估约束条件时使用的 ParameterName 的值。 “属性参数值”取决于“限制”参数。仅当限制名称指定为“限制”参数值时,ParameterValue 字段才可用。 在“属性参数值”中,每个限制(以 AttributeName 形式列出)具有一个 ParameterName 字段值,指定限制的行程是禁止、避免还是首选的“限制用法”与道路选择避免或首选的限制和程度相关联。可为约束条件用法 ParameterName 分配下列字符串值,或在括号内列出等效数值:
大多数情况下,如果限制取决于车辆特征(如车辆高度),则可以使用“限制用法”的默认值 PROHIBITED。但是在某些情况下,“限制用法”的值取决于您的路径偏好。例如,“避开收费公路”限制具有“限制用法”参数的默认值 AVOID_MEDIUM。这表示在使用限制时,在可能的情况下工具会试图绕开收费公路。AVOID_MEDIUM 也表示查找最佳路径时避开收费公路的重要性,即优先级为中等。选择 AVOID_LOW 会降低避开收费公路的重要性;而选择 AVOID_HIGH 则会增加其重要性,因此服务为避开收费公路而生成更长的路径时更容易为人所接受。选择 PROHIBITED 则会完全不允许在收费公路上行驶,因此路径不可能经过收费公路的所有部分。但是请注意,避开或禁止收费公路并由此避开公路通行费只是一部分人的目的;对另外一部分人来说,因为避开拥堵的交通比交一些公路通行费更为重要,会宁愿走收费公路。在后一种情况中,您可以选择 PREFER_LOW、PREFER_MEDIUM 或 PREFER_HIGH 作为“限制用法”的值。首选的等级越高,工具为了在与限制相关的道路上行驶就会绕行更远的路程。 | Record Set |
Time_Zone_for_Time_of_Day (可选) |
指定时区或时间参数的时区。
无论时间的时区如何设置,当时间为非空值并且多个设施点的面设置为创建合并或非重叠面时,所有设施点必须处于同一时区。 | String |
Service_Areas (可选) |
请忽略此参数 - 它仅供内部使用。 | Feature Class |
代码实例
以下 Python 脚本演示了如何在脚本中使用 GenerateServiceAreas 工具。
import arcpy
import time
import sys
username = "<your user name>"
password = "<your password>"
sa_service = "http://logistics.arcgis.com/arcgis/services;World/ServiceAreas;{0};{1}".format(username, password)
#Add the geoprocessing service as a toolbox. Use an alias when importing
arcpy.ImportToolbox(sa_service, "agol")
#Set the variables to call the tool
facilities = r"C:/data/Inputs.gdb/Stores"
output_service_areas = "C:/data/Results.gdb/StoreServiceAreas"
#Call the tool
result = arcpy.agol.GenerateServiceAreas(facilities, "5 10 15", "Minutes")
#Check the status of the result object every 0.5 seconds
#until it has a value of 4(succeeded) or greater
while result.status < 4:
time.sleep(0.5)
#print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
print "An error occured when running the tool"
print result.getMessages(2)
sys.exit(2)
elif result_severity == 1:
print "Warnings were returned when running the tool"
print result.getMessages(1)
#Get the output routes and save to a local geodatabase
result.getOutput(0).save(output_service_areas)