當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python ArcGIS plan_routes用法及代碼示例


本文簡要介紹 python 語言中 arcgis.features.analysis.plan_routes 的用法。

用法:

arcgis.features.analysis.plan_routes(stops_layer, route_count, max_stops_per_route, route_start_time, start_layer, start_layer_route_id_field=None, return_to_start=True, end_layer=None, end_layer_route_id_field=None, travel_mode=None, stop_service_time=0, max_route_time=525600, include_route_layers=False, output_name=None, context=None, gis=None, estimate=False, point_barrier_layer=None, line_barrier_layer=None, polygon_barrier_layer=None, future=False)

返回:

FeatureLayer 如果指定了 output_name,否則 dict 使用以下鍵:

“routes_layer”:層( FeatureCollection )

“assigned_stops_layer”:層( FeatureCollection )

“unassigned_stops_layer”:層( FeatureCollection )

plan_routes.png

plan_routes 方法確定如何在移動工作人員之間有效地劃分任務。

您提供輸入,其中包括一組停靠點和可訪問停靠點的車輛數量,該工具將停靠點分配給車輛並返回路線,顯示每輛車如何在最短的時間內到達指定的停靠點。

使用 plan_routes ,移動員工可以在更短的時間內到達更多的工作地點,從而提高生產力並改善客戶服務。組織經常使用plan_routes 來:

  • 檢查房屋、餐館和建築工地

  • 提供維修、安裝和技術服務

  • 運送物品和小包

  • 調用銷售電話

  • 提供從觀眾家到賽事的麵包車運輸

plan_routes 的輸出包括一層路線,顯示訪問站點的最短路徑;分配給路線的一層停靠點,以及由於給定參數設置而無法到達的任何停靠點;以及包含每條路線的旅行路線的方向層。

Parameter

Description

stops_layer

所需的要素層。車輛、駕駛員或路線應訪問的點。輸入停靠點上的字段包含在輸出停靠點中,因此,如果您的輸入圖層具有名稱、地址或產品說明等字段,則該信息將在結果中可用。請參閱特征輸入。

route_count

必需的整數。可訪問站點的車輛數量。該方法最多支持 100 輛車。

默認值為 0。

該方法可能能夠找到並返回一個解決方案,該解決方案使用的車輛數量少於您為此參數指定的數量。返回的車輛數量還取決於其他四個參數:stops_layer 中的總停靠次數、每輛車允許的停靠次數 (max_stops_per_route)、停靠站之間的行駛時間、每個停靠站花費的時間 (stop_service_time ),以及您對每輛車的總路線時間設置的任何限製 (max_route_time )。

max_stops_per_route

必需的整數。一條路線或車輛允許訪問的最大停靠點數。您可以指定的最大值為 200。默認值為 0。

這是平衡路由間總體工作負載的兩個參數之一。另一個是max_route_time

通過降低可分配給每輛車的最大停靠點數,車輛更有可能分配給它們的停靠點數量相等。這有助於平衡驅動程序之間的工作量。然而,缺點是它可能導致效率較低的解決方案。

通過增加每輛車的停靠點,該工具可以更自由地找到更有效的解決方案;但是,工作量可能在駕駛員和車輛之間分布不均。請注意,您可以通過指定 max_route_time 參數的值來按時間而不是停止次數來平衡工作負載。

以下示例演示了限製每輛車的最大停靠點或每輛車的總時間的效果。在所有這些示例中,兩條路線從同一位置開始,總共經過六個站點。

route_start_time

必需的日期時間.日期時間。指定車輛或人員開始其路線的時間。時間指定為日期時間。所有路線的起始時間值相同;也就是說,所有路線同時出發。

時區會影響您分配給 route_start_time 的值。開始時間的時區基於起點所在的時區。例如,如果您有一個路線起始位置,並且它位於太平洋標準時間 (PST),則您為 route_start_time 指定的時間是 PST。

鑒於開始時間取決於起點所在的位置,因此有幾種情況需要注意。需要注意的一種情況是當您位於一個時區但您的起始位置位於另一個時區時。例如,假設您在太平洋標準時間 (UTC-8:00) 並且您要路由的車輛駐紮在山區標準時間 (UTC-7:00)。如果當前是太平洋標準時間上午 9:30(美國東部標準時間上午 10:30)並且您的車輛需要在 30 分鍾內開始其路線,您可以將開始時間設置為上午 11:00。也就是說,路線的起始位置在山區時區,目前是上午 10:30,因此,從現在起 30 分鍾的開始時間是上午 11:00。請確保根據正確的時區設置參數。

另一種需要謹慎的情況是起始位置分布在多個時區。您為route_start_time 設置的時間特定於起始位置所在的時區,無論您提交的問題中是否有一個或多個起始位置。例如,如果一條路線從 PST 中的某個點開始,而另一條路線從 MST 開始,並且您輸入上午 11:00 作為開始時間,則 PST 中的路線將在太平洋標準時間上午 11:00 開始,而 MST 中的路線將開始在上午 11:00 MST 有 one-hour 差異。開始時間與本地時間相同,但在實際時間或 UTC 上有偏移。

該服務會自動為您確定輸入起始位置 (start_layer) 的時區。

例子:

  • datetime(2014, 10, 22, 8, 0) # 2014 年 10 月 22 日 8:00。路線將於 10 月 22 日上午 8:00 離開起點。任何以山區標準時間為起點的路線都從 2014 年 10 月 22 日 MST 上午 8:00 開始;任何以太平洋標準時間為起點的路線都從太平洋標準時間 2014 年 10 月 22 日上午 8:00 開始,以此類推。

  • datetime(2015, 3, 18, 10, 20) # 2015 年 3 月 18 日 10:20。

start_layer

必需的要素圖層。提供人員或車輛開始其路線的位置。您可以指定一個或多個起始位置。

如果指定一個,則所有路線都將從一個位置開始。如果指定多個起始位置,則每條路線都需要一個預定義的起始位置,並且必須滿足以下條件:

路線的數量 (route_count) 必須等於 start_layer 中的點數。 (但是,當 start_layer 中隻包含一個點時,假設所有路線都從同一個位置開始,兩個數字可以不同。)每條路線的起始位置必須用 start_layer_route_id_field 參數標識.這意味著start_layer 中的輸入點具有唯一標識符。請記住,如果您還有許多結束位置,那麽這些位置也需要預先確定。每條路線的預定起點和終點位置通過匹配路線 ID 值配對在一起。請參閱本主題的標題為路線的開始和結束位置的部分以了解更多信息。請參閱特征輸入。

start_layer_route_id_field

可選字符串。選擇一個唯一標識start_layer 中點的字段。當start_layer有多個點時需要該參數;否則將被忽略。

start_layer_route_id_field 參數有助於識別路由開始的位置並指示輸出路由的名稱。

請參閱本主題的標題為路線的開始和結束位置的部分以了解更多信息。

return_to_start

可選的布爾值。 True 值表示每條路線必須在其開始的同一地點結束其行程。起始位置由start_layerstart_layer_route_id_field 參數定義。

默認值是true。

end_layer

可選層。提供人員或車輛結束其路線的位置。

如果未指定 end_layer,則必須將 return_to_start 設置為 True。

您可以指定一個或多個結束位置。

如果指定一個,所有路由都將在一個位置結束。如果指定多個結束位置,則每條路線都需要一個預定義的結束位置,並且必須滿足以下條件:

  • 路線 (route_count) 的數量必須等於 end_layer 中的點數。 (但是,當 end_layer 中僅包含一個點時,假設所有路線都在同一位置結束,並且兩個數字可以不同。)

  • 每條路線的結束位置必須使用start_layer_route_id_field 參數進行標識。這意味著 endLayer 中的輸入點具有唯一的標識符。請記住,如果您還有許多起始位置,則也需要預先確定這些位置。每條路線的預定起點和終點位置通過匹配路線ID值而配對在一起。請參閱特征輸入。

end_layer_route_id_field

可選字符串。在 end_layer 中選擇一個唯一標識點的字段。當end_layer有多個點時需要該參數;如果有一個點或return_to_start 為真,則忽略它。

end_layer_route_id_field 參數有助於識別路由的結束位置並指示輸出路由的名稱。

請參閱本主題的標題為路線的開始和結束位置的部分以了解更多信息。

travel_mode

可選字符串。可選字符串。指定分析的運輸方式。

選擇列表:【‘行車距離’、‘行車時間’、‘農村行車距離’、‘農村行車時間’、‘行車距離’、‘行車時間’、‘步行距離’、‘步行時間’】

stop_service_time

可選浮點數。指示在每個站點花費的時間(以分鍾為單位)。單位是分鍾。從此參數為所有站點分配相同的服務持續時間,無法使用此服務指定單個站點的唯一值。

max_route_time

可選浮點數。您在此處指定的時間量限製了每條路線的最長持續時間。最大路線時間是行程時間和已訪問站點的總服務時間的累積 (stop_service_time)。此參數通常用於防止司機工作時間過長或平衡路線或司機的工作量。

單位是‘minutes’。默認值(也是最大值)為 525600 分鍾或一年。

include_route_layers

可選的布爾值。當include_route_layers 設置為 True 時,結果中的每條路線也會保存為路線圖層項目。路線圖層包括特定路線的所有信息,例如分配給路線的停靠點以及行進方向。如果您想與組織中的其他成員共享單個路徑,則創建路徑圖層非常有用。路徑圖層使用 output_name 參數中提供的輸出要素服務名稱作為前綴,並添加作為分析的一部分生成的路徑名稱,以便為每個路徑圖層創建唯一名稱。

output_name

可選字符串或 FeatureLayer 。現有要素圖層將導致新圖層附加到要素服務。如果 overwrite 在上下文中為 True,則新層將覆蓋現有層。如果未指示output_name,則創建新的 FeatureCollection

context

可選字典。處理範圍和輸出空間參考等附加設置。對於plan_routes,有三個設置。

  • extent - 定義分析區域的邊界框。僅分析input_layer 中與邊界框相交的那些特征。

  • outSR - 輸出要素將投影到 wkid 引用的輸出空間參考中。

  • overwrite - 如果為 True,則 output_name 中的要素層將被新要素層覆蓋。適用於 ArcGIS Online 或 Enterprise 10.9.1+

    # Example Usage
    context = {"extent": {"xmin": 3164569.408035,
                        "ymin": -9187921.892449,
                        "xmax": 3174104.927313,
                        "ymax": -9175500.875353,
                        "spatialReference":{"wkid":102100,"latestWkid":3857}},
                "outSR": {"wkid": 3857},
                "overwrite": True}

gis

可選,運行此工具的 GIS 。如果未指定,則使用活動 GIS。

estimate

可選的布爾值。如果為 True,將返回運行該操作的積分數。

point_barrier_layer

可選要素圖層。指定在基礎街道上行駛時充當臨時限製(即障礙)的一個或多個點要素。

點障礙可以模擬倒下的樹、事故、倒塌的電線或任何完全阻塞街道特定位置交通的東西。允許在街上旅行,但不允許穿過障礙物。請參閱特征輸入。

line_barrier_layer

可選要素圖層。指定一個或多個線要素,禁止在線與街道相交的任何地方行駛。

線障礙禁止在障礙與街道相交的任何地方旅行。例如,可以使用線障礙對阻礙跨多個街道段的交通的遊行或抗議進行建模。請參閱特征輸入。

polygon_barrier_layer

可選要素圖層。指定一個或多個麵要素,以完全限製在麵相交的街道上的通行。

這種類型的屏障的一種用途是模擬覆蓋街道網絡區域的洪水,並使那裏的道路無法通行。請參閱特征輸入。

future

可選布爾值。如果為 True,則將返回 future 對象,並且進程不會等待任務完成。默認為False,表示等待結果。

例子:

# USAGE EXAMPLE: To plan routes to provide cab from employee residence to office.
route = plan_routes(stops_layer=employee_residence,
                    route_count=4,
                    max_stops_per_route=4,
                    route_start_time=datetime(2019, 6, 20, 6, 0),
                    start_layer=office_location,
                    start_layer_route_id_field='n_office',
                    return_to_start=False,
                    end_layer=office_location,
                    end_layer_route_id_field='n_office',
                    travel_mode='Driving Time',
                    stop_service_time=5,
                    include_route_layers=False,
                    output_name='plan route for employees')

相關用法


注:本文由純淨天空篩選整理自arcgis.com大神的英文原創作品 arcgis.features.analysis.plan_routes。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。