ルート レイヤーとして共有 (Share As Route Layers) (Network Analyst)

サマリー

ネットワーク解析の結果をルート レイヤーとしてアクティブなポータルで共有します。 ルート レイヤーには、ルートに割り当てられた訪問先、特定のルートでサービスが提供される訪問先、移動方向などのルートに関するすべての情報が含まれます。

ルート レイヤー アイテムは、モバイル作業者にルート ガイダンスを提供する場合には、ArcGIS Navigator などの各種アプリケーションで使用し、ルート レイヤーに含まれているルートをカスタマイズする場合には、Map Viewer Classicルート案内ウィンドウで使用し、ルート レイヤーからルート解析レイヤーを作成する場合には、ArcGIS AllSource で使用することができます。

使用法

  • このツールは、ルート レイヤー アイテムを作成し、アクティブなポータルとして指定されたポータルで共有します。 アクティブなポータルは、ArcGIS Online または ArcGIS Enterprise 10.5.1 以降にする必要があります。

  • アクティブなポータルにサイン インしているユーザーには、空間解析とコンテンツ作成を実行する権限が必要です。

  • 同じ名前のルート レイヤー アイテムが指定のフォルダー内に存在する場合は、新しいアイテムが同じ名前で作成されます。 重複するアイテムが作成されないようにするための方法の 1 つは、このツールでルート レイヤーを作成する際に一意の [ルート名の接頭辞] 値を使用することです。

  • このツールを Python スクリプトで実行すると、ArcGIS AllSource に最後にアクセスしたアクティブなポータルがルート レイヤーの作成に使用されます。

  • 作成できるルート レイヤーの最大数は 1,000 です。 入力ルート データに 1,000 を超えるルートが含まれている場合、タスクはエラー メッセージを出力して失敗します。

パラメーター

ラベル説明データ タイプ
ネットワーク解析レイヤーまたはルート データの入力

ルート レイヤー アイテムの作成元であるネットワーク解析レイヤー。 ネットワーク解析レイヤーは、解析済みである必要があります。

ルート、最寄り施設、配車ルート、ラスト マイル デリバリーの各ネットワーク解析レイヤーがこのパラメーターへの有効な入力としてサポートされています。

arcpy.nax 解析結果オブジェクトsaveRouteData() メソッドによって作成されたルート データを含む .zip ファイル、または正しいスキーマでルート データの圧縮されたジオデータベースを返す REST API のサービス パラメーターを入力にすることもできます。

File; Network Analyst Layer
サマリー
(オプション)

ルート レイヤー アイテムで使用されるサマリー。 このサマリーは、ルート レイヤー アイテムのアイテム情報の一部として表示されます。 値を指定しないと、デフォルトのサマリー テキスト (<ルート名> のルートおよびルート案内) が使用されます。ここで、<ルート名> は、ルート レイヤーで表されるルートの名前に置き換えられます。

String
タグ
(オプション)

ルート レイヤー アイテムの説明と識別に使用されるタグ。 それぞれのタグはカンマで区切られます。 ルート名は、他の値が指定されていない場合でも、常にタグとして取り込まれます。

String
ルート名の接頭辞
(オプション)

すべてのルート レイヤー アイテムのタイトルに付加される修飾子。 たとえば、ルート名の接頭辞として Monday morning deliveries を使用すると、月曜日の午前中に行われる配達でのルート解析によって作成されたすべてのルート レイヤー アイテムがグループ化されます。 値を指定しないと、ルート名のみを使用してルート レイヤー アイテムのタイトルが作成されます。

String
ポータル フォルダーの名前
(オプション)

ルート レイヤー アイテムが作成されるパーソナル オンライン ワークスペース内のフォルダー。 指定された名前のフォルダーが存在しない場合は、フォルダーが作成されます。 指定された名前のフォルダーが存在する場合は、既存のフォルダー内にアイテムが作成されます。 値を指定しないと、ルート レイヤー アイテムがオンライン ワークスペースのルート フォルダー内に作成されます。

String
共有範囲
(オプション)

ルート レイヤー アイテムにアクセスできるユーザーを指定します。

  • すべてのユーザールート レイヤー アイテムがパブリックになり、すべてのユーザーがこのアイテムの URL を使用してアクセスできます。
  • 未共有ルート レイヤー アイテムは、このアイテムの所有者 (このツールの実行時にポータルに接続されているユーザー) とのみ共有されます。 つまり、このアイテムの所有者だけがルート レイヤーにアクセスできます。 これがデフォルトです。
  • 次のグループルート レイヤー アイテムは、接続されているユーザーが所属しているグループおよびそのメンバーと共有されます。 グループの指定には、グループ パラメーターを使用します。
  • 組織ルート レイヤー アイテムは、組織内のすべての認証済みユーザーと共有されます。
String
グループ
(オプション)

ルート レイヤー アイテムの共有先となるグループのリスト。 このパラメーターは、[共有範囲] パラメーターが [次のグループ] に設定されている場合にのみ適用されます。

String

派生した出力

ラベル説明データ タイプ
ルート レイヤー アイテム

ポータルで共有されたルート レイヤー アイテム。

String

arcpy.management.ShareAsRouteLayers(in_network_analysis_layer, {summary}, {tags}, {route_name_prefix}, {portal_folder_name}, {share_with}, {groups})
名前説明データ タイプ
in_network_analysis_layer

ルート レイヤー アイテムの作成元であるネットワーク解析レイヤー。 ネットワーク解析レイヤーは、解析済みである必要があります。

ルート、最寄り施設、配車ルート、ラスト マイル デリバリーの各ネットワーク解析レイヤーがこのパラメーターへの有効な入力としてサポートされています。

arcpy.nax 解析結果オブジェクトsaveRouteData() メソッドによって作成されたルート データを含む .zip ファイル、または正しいスキーマでルート データの圧縮されたジオデータベースを返す REST API のサービス パラメーターを入力にすることもできます。

File; Network Analyst Layer
summary
(オプション)

ルート レイヤー アイテムで使用されるサマリー。 このサマリーは、ルート レイヤー アイテムのアイテム情報の一部として表示されます。 値を指定しないと、デフォルトのサマリー テキスト (<ルート名> のルートおよびルート案内) が使用されます。ここで、<ルート名> は、ルート レイヤーで表されるルートの名前に置き換えられます。

String
tags
(オプション)

ルート レイヤー アイテムの説明と識別に使用されるタグ。 それぞれのタグはカンマで区切られます。 ルート名は、他の値が指定されていない場合でも、常にタグとして取り込まれます。

String
route_name_prefix
(オプション)

すべてのルート レイヤー アイテムのタイトルに付加される修飾子。 たとえば、ルート名の接頭辞として Monday morning deliveries を使用すると、月曜日の午前中に行われる配達でのルート解析によって作成されたすべてのルート レイヤー アイテムがグループ化されます。 値を指定しないと、ルート名のみを使用してルート レイヤー アイテムのタイトルが作成されます。

String
portal_folder_name
(オプション)

ルート レイヤー アイテムが作成されるパーソナル オンライン ワークスペース内のフォルダー。 指定された名前のフォルダーが存在しない場合は、フォルダーが作成されます。 指定された名前のフォルダーが存在する場合は、既存のフォルダー内にアイテムが作成されます。 値を指定しないと、ルート レイヤー アイテムがオンライン ワークスペースのルート フォルダー内に作成されます。

String
share_with
(オプション)

ルート レイヤー アイテムにアクセスできるユーザーを指定します。

  • EVERYBODYルート レイヤー アイテムがパブリックになり、すべてのユーザーがこのアイテムの URL を使用してアクセスできます。
  • MYCONTENTルート レイヤー アイテムは、このアイテムの所有者 (このツールの実行時にポータルに接続されているユーザー) とのみ共有されます。 つまり、このアイテムの所有者だけがルート レイヤーにアクセスできます。 これがデフォルトです。
  • MYGROUPSルート レイヤー アイテムは、接続されているユーザーが所属しているグループおよびそのメンバーと共有されます。 グループの指定には、グループ パラメーターを使用します。
  • MYORGANIZATIONルート レイヤー アイテムは、組織内のすべての認証済みユーザーと共有されます。
String
groups
[groups,...]
(オプション)

ルート レイヤー アイテムの共有先となるグループのリスト。 このパラメーターは、share_with パラメーターが MYGROUPS に設定されている場合にのみ適用されます。

String

派生した出力

名前説明データ タイプ
route_layer_items

ポータルで共有されたルート レイヤー アイテム。

String

コードのサンプル

ShareAsRouteLayers の例 (Python ウィンドウ)

次の例は、必須パラメーターだけを使用して、解析済みのルート解析をルート レイヤーとしてアクティブなポータルで共有する方法を示しています。

arcpy.na.ShareAsRouteLayers('Route')
ShareAsRouteLayers の例 2 (スタンドアロン スクリプト)

次の例は、ルート レイヤー アイテムのサマリーとタグを指定して、解析済みのルート解析をルート レイヤーとして共有する方法を示しています。 このルート レイヤー アイテムの名前は Wednesday Route for Food Inspection という接頭辞で始まります。 このルート レイヤーは、アクティブなポータルの RouteLayers というフォルダー内に作成され、ポータルの Drivers グループと共有されます。

arcpy.na.ShareAsRouteLayers('Route', 'Share route solve result as route layers', 
                            'Food inspection', 'Wednesday Route for Food Inspection', 
                            'RouteLayers', 'MYGROUPS', 'Drivers')
ShareAsRouteLayers の例 3 (スタンドアロン スクリプト)

次のスタンドアロン Python スクリプトは、ShareAsRouteLayers 関数を使用して、解析済みの最寄り施設の検出ネットワーク解析レイヤーをアクティブなポータルで共有する方法を示しています。

# Name: ShareAsRouteLayers_Workflow.py
# Description: Find the closest warehouse from the store locations and share the
#              results as route layers.
# Requirements: Network Analyst Extension

# Import system modules
import arcpy
from arcpy import env
import os


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.")

    # Check if logged into active Portal. Fail if not logged into actiave portal.
    if arcpy.GetSigininToken() is None:
        raise arcpy.ExecuteError("Please sign in to your active portal in ArcGIS Pro.")
    
    # Set environment settings
    output_dir = "C:/Data"
    # The NA layer's data will be saved to the workspace specified here
    env.workspace = os.path.join(output_dir, "Output.gdb")
    env.overwriteOutput = True

    # Set local variables
    input_gdb = "C:/Data/Paris.gdb"
    network = os.path.join(input_gdb, "Transportation", "ParisMultimodal_ND")
    layer_name = "ClosestWarehouse"
    travel_mode = "Driving Time"
    facilities = os.path.join(input_gdb, "Analysis", "Warehouses")
    incidents = os.path.join(input_gdb, "Analysis", "Stores")

    # Create a new closest facility analysis layer. 
    result_object = arcpy.na.MakeClosestFacilityAnalysisLayer(network,
                                    layer_name, travel_mode, "TO_FACILITIES",
                                    number_of_facilities_to_find=1)

    # Get the layer object from the result object. The closest facility layer can
    # now be referenced using the layer object.
    layer_object = result_object.getOutput(0)

    # Get the names of all the sublayers within the closest facility layer.
    sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    # Stores the layer names that we will use later
    facilities_layer_name = sublayer_names["Facilities"]
    incidents_layer_name = sublayer_names["Incidents"]

    # Load the warehouses as Facilities using the default field mappings and
    # search tolerance
    arcpy.na.AddLocations(layer_object, facilities_layer_name,
                            facilities, "", "")

    # Load the stores as Incidents. Map the Name property from the NOM field
    # using field mappings
    field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
                                                    incidents_layer_name)
    field_mappings["Name"].mappedFieldName = "NOM"
    arcpy.na.AddLocations(layer_object, incidents_layer_name, incidents,
                          field_mappings, "")

    # Solve the closest facility layer
    arcpy.na.Solve(layer_object)

    # Share the routes from the closest facility analysis as route layers
    arcpy.na.ShareAsRouteLayers(layer_object, "Share closest facility solve result as route layers")

    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))