查找最近设施点 (Network Analyst)
摘要
根据行驶时间、距离或其他成本查找一个或多个离事件点最近的设施点,并输出事件点与设施点间的最佳路径、所选设施点和行驶方向。例如,您可以使用此工具查找离事故地点最近的医院、离犯罪现场最近的警车或者是离客户地址最近的商店。
查找最近设施点时,您可以指定要查找的设施点数量和行驶方向(驶向设施点或驶离设施点)。如果您的网络数据集支持交通信息,您还可以指定一天中的时间以根据该日期和时间计算行驶时间。例如,您可以使用此工具搜索距离事故发生地点行驶时间在 15 分钟(根据给定的一天中的时间计算)以内的医院。查找结果中将不会包含任何行驶时间超出 15 分钟(依据交通状况计算)的医院。
查找最近设施点和创建最近设施点分析图层工具类似,只是目的不同而已。如果正在设置地理处理服务,请使用查找最近设施点,这将会简化设置过程。否则,请使用创建最近设施点图层。
如要使用查找最近设施点创建最近设施点地理处理服务,只需设置一个工具,然后直接将其发布为服务。与此相反,您需要使用创建最近设施点分析图层工具创建模型,将其正确连接到其他不同的工具,并发布此模型以创建最近设施点地理处理服务。要了解如何使用教程数据设置最近设施点服务,请参阅 Network Analyst 地理处理服务示例概述。要考虑的另一个选项是 ArcGIS Online 最近设施点服务。该服务与 ArcMap 中地理处理工具的运行方式类似,可通过其他应用程序进行访问,并包含世界上大部分地区的高质量道路数据。
用法
此工具对话框将各种可选参数分组为以下六个类别,以便您能更轻松地对其进行管理:
- 高级分析
- 障碍
- 网络数据集
- 网络位置
- 输出
- 服务功能
语法
参数 | 说明 | 数据类型 |
Incidents |
此工具用于确定离事件点最近的设施点,且此参数指定这些事件点。要求解某个分析,至少需要一个事件点。 指定事件点后,可通过使用“特性”为每个事件点设置属性,例如时间点的名称或服务时间。可通过以下属性指定事件点: OBJECTID - 系统管理的 ID 字段。 SHAPE - 指示事件点地理位置的几何字段。 Name - 事件点的名称。该名称用于行驶方向中。如果未指定名称,则会在输出路径和方向中自动生成前缀为 Location 的唯一名称。 ID - 事件点的唯一标识符。该标识符包含在输出路径中(作为 IncidentID 字段),且有助于将输出路径的附加信息(例如总行驶时间或总距离)连接到事件点的属性中,反之亦然。如果未指定 ID,则服务将为每个事件点自动生成一个唯一的标识符。 AdditionalTime - 在事件点所花费的时间,该时间将被添加到路径总时间中。该属性值的单位由“测量单位”参数所指定。仅在测量单位基于时间时,属性值才能包含在分析中。默认值为 0。 如果您要查找离火灾事件点最近的消防站以估算响应时间,AdditionalTime 属性可存储消防人员开始灭火前在事件点位置连接装备所花费的时间。 AdditionalDistance - 在事件点所行驶的额外距离,该距离将被添加到路径总距离中。该属性值的单位由“测量单位”参数所指定。仅在测量单位基于距离时,属性值才能包含在分析中。默认值为 0。 通常,事件点的位置(例如住宅)并不是恰好位于街道上,而是位于道路的后方。该属性值可用于构建实际事件点位置与其在街道上的位置之间的距离,如有必要,将此段距离包括在总行驶距离中。 CurbApproach - 指定车辆到达和离开事件点的方向。该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):
CurbApproach 属性是专为使用以下两种国家驾驶标准而设计的:右侧通行(美国)和左侧通行(英国)。首先,考虑位于车辆左侧的事件点。不管车辆行驶在左车道还是右车道,停靠点始终位于车辆的左侧。决定从其中任一方向到达事件点可能会更改国家驾驶标准,也就是说,从车辆的右侧或左侧靠近事件点。例如,如果要到达一个事件点并且在车辆与事件点之间不存在其他交通车道,那么在美国应该选择“车辆的右侧”(1),而在英国应该选择“车辆的左侧”(2)。 | Feature Set |
Facilities | 此工具用于查找离事件点最近的设施点,且此参数指定这些设施点。要求解某个分析,至少需要一个设施点。 指定设施点后,可通过使用“特性”为每个事件点设置属性,例如时间点的名称或服务时间。可通过以下属性指定设施点: Name - 设施点的名称。该名称用于行驶方向中。如果未指定名称,则会在输出路径和方向中自动生成前缀为 Location 的唯一名称。 ID - 设施点的唯一标识符。该标识符包含在输出路径中(作为 IncidentID 字段)和输出最近设施点中(作为 FacilityID 字段)。FacilityID 字段可用于将输出路径的附加信息(例如总行驶时间或总距离)连接到设施点的属性中。如果未指定 ID,则服务将为每个设施点自动生成一个唯一的标识符。 AdditionalTime - 在设施点所花费的时间,该时间将被添加到路径总时间中。该属性值的单位由“测量单位”参数所指定。仅在测量单位基于时间时,属性值才能包含在分析中。默认值为 0。 如果您要查找离火灾事件点最近的消防站,AdditionalTime 可存储消防人员穿好适当的防护装备和离开消防站所花费的时间。 AdditionalDistance - 在设施点所行驶的额外距离,该距离将被添加到路径总距离中。该属性值的单位由“测量单位”参数所指定。仅在测量单位基于距离时,属性值才能包含在分析中。默认值为 0。 通常,设施点的位置(例如消防站)并不是恰好位于街道上,而是位于道路的后方。AdditionalDistance 可用于构建实际设施点位置与其在街道上的位置之间的距离,如有必要,将此段距离包括在总行驶距离中。 CurbApproach:指定车辆到达和离开设施点的方向。该字段值可指定为以下整数之一(请使用数值代码而非括号中的名称):
CurbApproach 属性是专为使用以下两种国家驾驶标准而设计的:右侧通行(美国)和左侧通行(英国)。首先,考虑位于车辆左侧的设施点。不管车辆行驶在左车道还是右车道,停靠点始终位于车辆的左侧。决定从其中任一方向到达设施点可能会更改国家驾驶标准,也就是说,从车辆的右侧或左侧靠近事件点。例如,如果要到达一个设施点并且在车辆与设施点之间不存在其他交通车道,那么在美国应该选择“车辆的右侧”(1),而在英国应该选择“车辆的左侧”(2)。 | Feature Set |
Measurement_Units | 指定用于测量和报告输出路径的总行驶时间或行驶距离的单位。该工具可通过测量行驶时间或沿街道行驶距离查找最近设施点。 为此参数选择的单位可以确定工具将测量行驶距离还是行驶时间来查找最近位置。选择时间单位以测量行驶时间。要测量行驶距离,则请选择距离单位。选择的单位还确定工具在结果中以哪种单位报告总行驶时间或距离。这些单位包括:
该工具根据选择的测量单位是基于时间还是距离来选择是否使用时间属性或距离属性参数中指定的网络成本属性。 当测量单位值与对应的时间或距离成本属性的单位不同时,此工具将进行必要的单位转换。 | String |
Network_Dataset |
将在其中执行分析的网络数据集。网络数据集通常表示街道网络,但也可能表示其他种类的交通网。网络数据集至少需要一个基于时间和一个基于距离的成本属性。 | Network Dataset Layer |
Output_Geodatabase |
输出工作空间。此工作空间必须已经存在。默认输出工作空间为 in_memory。 | Workspace |
Output_Routes_Name |
输出要素类的名称包含路线或连接事件点与其最近设施点的线。此要素类还包含事件点与其最近设施点间的行程总成本(一种属性)。 查找最近设施点的输出介绍了该输出要素类的方案。 | String |
Output_Directions_Name |
输出要素类的名称包含方向。 查找最近设施点的输出介绍了该输出要素类的方案。 | String |
Output_Closest_Facilities_Name |
输出要素类的名称包含最近设施点。 查找最近设施点的输出介绍了该输出要素类的方案。 | String |
Number_of_Facilities_to_Find (可选) | 指定要为事件点查找的最近设施点数。这在发生诸如火灾之类的情况下很有用,因为此时需要来自不同消防站的多台消防车同时灭火。例如,您可以指定查找距离起火地点最近的三个消防站。 如果您正通过此工具设置服务,并想要限制服务器上资源的使用(如处理时间),那么请使用要查找的最大设施点数参数来限制用户可以在要查找的设施点数中输入的最大设施点数。 | Long |
Default_Cutoff (可选) | 对于给定事件点,指定停止搜索设施点的行驶时间值或行驶距离值。例如,在查找距离事故地点最近的医院时,如果中断值设为 15 分钟,则表示工具将搜索距离事件点 15 分钟车程以内的最近医院。如果到达最近的医院需要 17 分钟的车程,则在输出路径中不会返回任何路线。在搜索多个设施点时,中断值尤为有用。 该参数的单位由测量单位参数指定。 | Double |
Travel_Direction (可选) | 指定是按照从事件点到设施点还是从设施点到事件点的距离测量值来搜索最近设施点。
使用其中一个参数值可查找不同的设施点,因为沿某些街道的行驶时间可能会根据行驶方向和单行线限制而发生变化。例如,从事件点行驶到设施点时,可能需要 10 分钟,而从设施点行驶到事件点时,可能因该方向上的行驶时间不同而需要 15 分钟。如果您要设置时间的值,交通状况也可能导致“设施点到事件点”和“事件点到设施点”选项返回不同的结果。 消防部门通常使用参数的“设施点到事件点”值,因为他们需要关注从消防站(设施点)行驶到紧急救援位置(事件点)所需的时间。零售商店(设施点)则更关注顾客(事件点)到达商店所需的时间;因此,商店通常选择“事件点到设施点”选项。 | String |
Time_of_Day (可选) |
指定路径应该开始或结束的时间和日期。该值根据时间用法参数的值可用作路径的起始时间或结束时间。如果您指定当前日期和时间作为该参数的值,则工具将使用实时交通状况查找最近设施点,并且总行驶时间将基于交通状况提供。 如果您的网络数据集包含实时或历史流量数据,那么指定一天中的时间可以更精确地估算事件点与设施点之间的行驶时间,这是因为根据交通状况计算的行驶时间与您指定的日期和时间相适应。 时间的时区参数指定该时间和日期是参考 UTC 还是设施点或事件点所在时区。 无论时间的时区如何设置,如果您的设施点和事件点在多个时区中,则工具将强制执行以下规则:
| Date |
Time_of_Day_Usage (可选) | 指示时间参数值是表示路径的到达时间还是离开时间。
| String |
Time_Zone_for_Time_of_Day (可选) |
指定时间参数的时区。
无论时间的时区如何设置,如果您的设施点和事件点在多个时区中,则工具将强制执行以下规则:
| String |
UTurn_Policy (可选) | 交汇点的 U 形转弯策略。允许 U 形转弯表示求解程序可以在交汇点处转向并沿同一街道往回行驶。 考虑到交汇点表示街道交叉路口和死角,不同的车辆可以在某些交汇点转弯,而在其他交汇点则不行 - 这取决于交汇点是交叉路口还是死角。为适应此情况,U 形转弯策略参数由连接到交汇点的边数隐性指定,这称为交汇点原子价。此参数可接受的值如下所列;每个值的后面是根据交汇点原子价对其含义的描述。
提示: 如果您需要定义更加精确的 U 形转弯策略,可以考虑在网络成本属性中添加一个通用转弯延迟赋值器,或者如果存在的话,调整其设置,并特别注意反向转弯的配置。还要考虑设置网络位置的 CurbApproach 属性。 | String |
Point_Barriers (可选) | 指定点障碍,分为两种类型:禁止型点障碍和增加成本型点障碍。它们可以暂时限制网络上的穿越或在网络的点上增加阻抗。点障碍由要素集定义,为点要素指定的属性值决定它们是禁止型障碍还是增加成本型障碍。下面列出并描述了属性表中的字段。 ObjectID: 系统管理的 ID 字段。 Shape: 指示网络分析对象地理位置的几何字段。 名称: 障碍的名称。 BarrierType: 指定障碍的存在将完全禁止通行还是在通行时增加成本。有以下两个选项:
将值 0 用于禁止型值,将 2 用于成本增加型值。 Additional_Time: 表示穿越障碍时会增加的行驶时间。此字段仅适用于增加成本型障碍且仅在测量单位基于时间时适用。此字段的值必须大于或等于零,并且其单位与测量单位参数中指定的单位相同。 Additional_Distance: 表示穿越障碍时会增加的距离。此字段仅适用于增加成本型障碍且仅在测量单位基于距离时适用。该字段的值必须大于或等于零,并且其单位与测量单位参数中指定的单位相同。 | Feature Set |
Line_Barriers (可选) |
指定线障碍,暂时限制穿越障碍。线障碍由要素集定义。下面列出并描述了属性表中的字段。 ObjectID: 系统管理的 ID 字段。 Shape: 指示网络分析对象地理位置的几何字段。 名称: 障碍的名称。 | Feature Set |
Polygon_Barriers (可选) | 指定面障碍,分为两种类型:禁止型面障碍和调整成本型面障碍。它们会暂时限制穿越所覆盖的网络部分或调整阻抗。面障碍由要素集定义,为面要素指定的属性值决定它们是禁止型障碍还是调整成本型障碍。下面列出并描述了属性表中的字段。 ObjectID: 系统管理的 ID 字段。 Shape: 指示网络分析对象地理位置的几何字段。 名称: 障碍的名称。 BarrierType: 指定障碍的存在将完全禁止通行还是按比例增加行程成本。共有两个选项:
将值 0 用于禁止型值,将 1 用于成本按比例增加型值。 ScaledTimeFactor 它是与障碍相交街道的行驶时间要乘以的因子。此字段仅适用于调整成本型障碍且仅在测量单位基于时间时适用。该字段值必须大于零。 ScaledDistanceFactor 它是与障碍相交街道的距离要乘以的因子。此属性仅适用于调整成本型障碍且仅在测量单位基于距离时适用。该属性值必须大于零。 | Feature Set |
Time_Attribute (可选) |
定义测量单位值为时间单位时要使用的网络成本属性。 当测量单位值与此处定义的成本属性单位不同时,此工具将进行必要的时间单位转换。换言之,默认中断和网络成本属性的时间单位不必相同。 | String |
Time_Attribute_Units (可选) | 时间属性单位。您可以明确地设置时间属性单位,但是建议您不要传递任何内容或者可以传递 "#" 并由求解程序确定该单位。 | String |
Distance_Attribute (可选) | 定义测量单位值为距离单位时要使用的网络成本属性。 当测量单位值与此处定义的成本属性单位不同时,此工具将进行必要的距离单位转换。换言之,测量单位和网络成本属性的距离单位不必相同。 | String |
Distance_Attribute_Units (可选) | 距离属性单位。您可以明确地设置距离属性单位,但是建议您不要传递任何内容或者可以传递 "#" 并由求解程序确定该单位。 | String |
Use_Hierarchy_in_Analysis (可选) | 指定是否应在查找设施点和事件点之间的最佳路径时使用等级。
如果未在用于执行分析的网络数据集中定义等级属性,该参数将不可用。在这种情况下,使用 "#" 作为参数值。 您可以使用 Force_Hierarchy_Beyond_Distance 参数进行强制求解来应用等级,即使 Use_Hierarchy_in_Analysis 设置为 false。 | Boolean |
Restrictions [restriction,...] (可选) |
指示求解时应遵守的网络限制属性。 | String |
Attribute_Parameter_Values (可选) |
指定具有参数的网络属性的参数值。记录集具有两个共同唯一识别参数的列以及另一个指定参数值的列。 属性参数值记录集具有关联属性。下面列出并描述了属性表中的字段。 ObjectID: 系统管理的 ID 字段。 AttributeName: 网络属性的名称,其属性参数由表行设置。 ParameterName: 属性参数的名称,其值由表行设置。(无法使用此工具更新“对象”类型参数。) ParameterValue: 您希望的属性参数值。如果未指定值,则属性参数将被设置为空。 | Record Set |
Accumulate_Attributes [attribute,...] (可选) |
分析过程中要累积的成本属性的列表。这些累积属性仅供参考;求解程序仅使用时间属性或距离属性参数所指定的成本属性来计算路径。 对于每个累积的成本属性,均会向求解程序所输出的路径中添加一个 Total_[属性] 属性。 | String |
Maximum_Snap_Tolerance (可选) |
最大捕捉容差是指在网络上定位或重新定位一个点时 Network Analyst 搜索的最远距离。搜索会寻找适合的边或交汇点,并把点捕捉到最近的边或交汇点。如果在最大捕捉容差内没有找到合适的位置,对象将标记为无法定位。 | Linear unit |
Feature_Locator_WHERE_Clause (可选) |
用于选择源要素子集的 SQL 表达式,该子集对可以定位设施点的网络元素设定了限制。此参数的语法由两部分组成:第一部分为源要素类名称(后接一个空格),第二部分为 SQL 表达式。要为两个或多个源要素类编写 SQL 表达式,请用分号分隔。 例如,为确保设施点不定位在限制出入的公路上,需编写一个类似于下面所列的 SQL 表达式,以排除这些源要素:"Streets" "FUNC_CLASS not in('1', '2')". 注意,加载时,障碍将忽略要素定位器 WHERE 子句。 | String |
Route_Shape (可选) | 指定工具输出的路径要素的类型。可以使用以下值之一指定此参数:
当路径形状参数设置为“实际形状”时,路径形状的制图综合可以使用适当的“路线简化容差”参数值进行进一步控制。 无论选择哪种路径形状参数值,最佳路径总是通过最大限度地缩短行驶时间或行驶距离,而不是使用事件点和设施点间的直线距离来确定。这意味着只有路径形状是不同的,而非查找路径时搜索的基础街道。 | String |
Route_Line_Simplification_Tolerance (可选) | 指定路径几何的简化程度。 如果路径形状参数未设置为 TRUE_LINES_WITH_MEASURES 或 TRUE_LINES_WITHOUT_MEASURES,工具将忽略此参数。 简化将保留路径上定义路径基本形状所需的关键点(例如交点处的转弯)而删除其他点。指定的简化距离为简化线偏离原始线的最大允许偏移。简化线将减少路径几何中的折点数。这将改善工具的执行时间。 | Linear Unit |
Populate_Directions (可选) |
指定工具是否应为每条路径生成行驶方向。
| Boolean |
Directions_Language (可选) | 指定在生成行驶方向时使用的语言。此参数仅在选中填充方向参数或设置为 True 时使用。 方向语言的可用性取决于计算机上安装的 ArcGIS 语言包。该值均以两位或五位字符语言代码输入,例如英语为 en,简体中文为 zh-CN。 如果指定了某种不支持的语言代码,该工具将会使用默认语言(英语)返回方向。 | String |
Directions_Distance_Units (可选) |
指定在行驶方向中显示行驶距离的单位。此参数仅在选中填充方向参数或设置为 True 时使用。
| String |
Directions_Style_Name (可选) | 指定方向的格式化样式名称。此参数仅在选中填充方向参数或设置为 True 时使用。可以使用以下值指定此参数:
| String |
Maximum_Features_Affected_by_Point_Barriers (可选) | 限制点障碍影响的要素数量。 此参数帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Features_Affected_by_Line_Barriers (可选) |
限制线障碍影响的要素数量。 此参数帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Features_Affected_by_Polygon_Barriers (可选) |
限制面障碍影响的要素数量。 此参数帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Facilities (可选) |
限制可向最近设施点分析中添加的设施点数。 此参数帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Facilities_to_Find (可选) | 限制用户可请求服务查找的最大设施点数。 此参数帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Maximum_Incidents (可选) |
限制可向最近设施点分析中添加的事件点数。 此参数帮助您管理求解时发生的处理量。例如,您可以为免费版服务中的这个参数指定一个较低的值,在付费订阅版服务中使用一个较高的值。 空值表示没有限制。 | Long |
Force_Hierarchy_Beyond_Distance (可选) |
指定一段距离,求解程序将在该距离后进行强制分级,即使在求解基于时间的服务区时未启用等级也是如此。此参数的单位与距离属性单位参数中显示的单位相同。 使用网络等级时查找远距离的最近设施点,相比不使用等级查找同一最近设施点进行的处理往往更少。此参数可帮助您管理求解时发生的处理量。 空值表示决不会强制分级,并且在分析中应用等级参数的值始终适用。如果输入网络数据集不支持等级,则为该参数指定值会导致错误。在这种情况下,应使用空值。 | Double |
Save_Output_Network_Analysis_Layer (可选) |
在任何情况下,都会返回带有路径和方向的要素类。不过,服务器管理员也可能希望选择输出一个网络分析图层,以便可以使用 ArcGIS for Desktop 环境中的 Network Analyst 控件调试工具的设置和结果。这会使调试过程变得更加容易。 在 ArcGIS for Desktop 中,网络分析图层的默认输出位置位于临时文件夹内。可通过评估 arcpy.env.scratchFolder 地理处理环境的值来确定临时文件夹的位置。输出网络分析图层存储为 LYR 文件,其名称以 _ags_gpna 开头,后跟字母数字 GUID。 | Boolean |
代码实例
使用所需参数执行此工具。
import arcpy
incidents = arcpy.FeatureSet()
incidents.load("Stores")
facilities = arcpy.FeatureSet()
facilities.load("Warehouses")
arcpy.na.FindClosestFacilities(incidents, facilities, "Minutes",
"Streets_ND", "in_memory", "Routes",
"Directions", "CLosestFacilities",
Number_of_Facilities_to_Find=1)
以下独立 Python 脚本演示了 FindClosestFacilities 如何能够确定距离仓库最近的商店。您可以修改该脚本以使用其他输入查找离事故发生点最近的救护车、离掉落的电力线最近的工作团队等等。
# Name: FindClosestFacilities_Workflow.py
# Description: For each store, find the closest warehouse. The output will show
# the routes between stores and warehouses, driving directions,
# and the subset of warehouses that were closest to stores.
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
try:
#Check out the Network Analyst extension license
arcpy.CheckOutExtension("Network")
#Set environment settings
env.workspace = r'C:\arcgis\ArcTutor\Network Analyst\Tutorial\Paris.gdb'
env.overwriteOutput = True
#Set local variables
inNetworkDataset = r'Transportation\ParisMultimodal_ND'
inIncidents = r'Analysis\Stores'
inFacilities = r'Analysis\Warehouses'
outGeodatabase = r'C:\arcgis\ArcTutor\Network Analyst\Tutorial\Output.gdb'
outRoutes = "Routes"
outDirections = "Directions"
outClosestFacilities = "ClosestFacilities"
measurement_units = "Minutes"
# Run FindClosestFacilities. Choose to find only the closest facility.
arcpy.na.FindClosestFacilities(inIncidents, inFacilities, measurement_units,
inNetworkDataset, outGeodatabase, outRoutes,
outDirections, outClosestFacilities,
Number_of_Facilities_to_Find=1)
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 occured on line %i" % tb.tb_lineno
print str(e)