arcpy.na.MakeLocationAllocationAnalysisLayer(network_data_source, {layer_name}, {travel_mode}, {travel_direction}, {problem_type}, {cutoff}, {number_of_facilities_to_find}, {decay_function_type}, {decay_function_parameter_value}, {target_market_share}, {capacity}, {time_of_day}, {time_zone}, {line_shape}, {accumulate_attributes}, {ignore_invalid_locations}, {analysis_geodatabase}, {analysis_feature_dataset_name})
|
名前
|
説明
|
データ タイプ
|
|
network_data_source
|
ネットワーク解析が実行されるネットワーク データセットまたはサービス。
このパラメーターは、次のいずれかを使用して指定できます。
ポータル URL を使用するには、ルート検索権限があるアカウントでポータルにサイン インする必要があります。
Python でポータルにサイン インする方法の詳細
ルート検索サービスを使用したネットワーク解析についての詳細
ArcGIS Online を使用してルート検索サービスが入力ネットワークとして構成されている ArcGIS Online または ArcGIS Enterprise ポータルを使用している場合、解析を実行するとクレジットが消費され、特定の制限 (許可された入力の数など) の対象になります。
ネットワーク解析におけるクレジット消費量と解析の制限の詳細
|
Network Dataset Layer; String
|
|
layer_name
(オプション)
|
作成されるネットワーク解析レイヤーの名前。
|
String
|
|
travel_mode
(オプション)
|
解析で使用される移動モードの名前。 移動モードは、移動規制や U ターン ポリシーなど、歩行者、車、トラック、その他の交通手段がネットワークをどのように移動するかを決定するネットワーク設定のコレクションを表します。 移動モードは、ネットワーク データ ソースに対して定義されます。
arcpy.na.TravelMode オブジェクトおよび移動モードの有効な JSON 表現を含む文字列もこのパラメーターの入力として使用できます。
|
String
|
|
travel_direction
(オプション)
|
ネットワーク コストを計算するときに施設と需要地点間で移動する方向を指定します。
移動方向を使用することで、移動する方向に基づいた一方通行規制およびさまざまなインピーダンスを考慮した、ネットワーク上の施設への需要地点の割り当てが行われるようになります。 たとえば、需要地点から施設への移動には 15 分かかっても、施設から需要地点への移動時間は 10 分だけの場合があります。
|
String
|
|
problem_type
(オプション)
|
実行する解析タイプ。 解析タイプは配置されている施設の種類に応じて選択します。 それは施設の種類によって、優先事項と制約が異なるからです。
MINIMIZE_IMPEDANCE—このオプションでは倉庫のロケーション解析を実行します。 加重インピーダンス (そのロケーションにおける需要と最寄り施設へのインピーダンスの掛け算) の合計値を最小になるように、複数の施設を選択します。 この解析タイプは P 中央値解析としてよく知られています。 これがデフォルトの解析タイプです。
MAXIMIZE_COVERAGE—このオプションでは消防署のロケーション解析を実行します。 すべての需要、あるいは需要の最大量が指定したインピーダンスの閾値に収まるように施設を選択します。
MAXIMIZE_CAPACITATED_COVERAGE—このオプションでは、施設の容量に制限がある場合のロケーション解析を実行します。 すべての需要または需要の最大量を、いずれの施設でも容量を超えることなく提供できるように施設が選択されます。 容量の制限を満たすだけでなく、加重インピーダンス (施設に割り当てられた需要に、施設との間のインピーダンスを掛けた値) の合計値が最小になるように施設が選択されます。
MINIMIZE_FACILITIES—このオプションでは消防署のロケーション解析を実行します。 すべての需要、あるいは需要の最大量を指定したインピーダンスの閾値に収めるのに必要な最小数の施設を選択します。
MAXIMIZE_ATTENDANCE—このオプションでは、近傍店舗のロケーション解析を実行します。各店舗には近傍の需要が割り当てられますが、割り当てられる需要値の比率は距離の増加に伴い、低下します。 割り当てられた需要の合計が最大になるように複数の施設が選択されます。 選択された施設は、指定されたインピーダンスの閾値より大きい需要には影響を受けません。
MAXIMIZE_MARKET_SHARE—このオプションでは競合施設のロケーション解析を実行します。 競合施設に対して市場シェアを最大化する施設を選択します。 各施設に割り当てられた需要比率の決定には、重力モデルの概念が使用されます。 割り当てられた需要の合計が最大になるように複数の施設が選択されます。
TARGET_MARKET_SHARE—このオプションでは競合施設のロケーション解析を実行します。 競合施設に対して指定された目標市場シェアを満たすように施設を選択します。 各施設に割り当てられた需要比率の決定には、重力モデルの概念が使用されます。 指定された目標市場シェアを満たすために必要な最小数の施設が選択されます。
|
String
|
|
cutoff
(オプション)
|
需要地点を施設に割り当てることができる最大インピーダンス。単位は、指定した 移動モード の値で使用されるインピーダンス属性の単位です。 最大インピーダンスは、ネットワークに沿った最小コスト パスによって計測されます。 需要地点がカットオフの範囲外にある場合、それは割り当てられません。 このパラメーターは、店舗に訪れるために顧客が移動することをいとわない最大距離や、消防署がコミュニティーのすべての人に到達するのにかかっても許容される最長時間などをモデリングするのに使用することもできます。
このカットオフ値は、Cutoff_ [Impedance] プロパティの需要地点サブレイヤーのカットオフ値を個別に指定することで、需要地点ごとにオーバーライドできます。 たとえば、施設に到達するために移動してもいとわない距離が農村部の住民の場合は最大 10 マイルであるのに対し、都市部の住民の場合は最大 2 マイルであるとします。 この動作は、解析レイヤーのカットオフ値を 10 に設定し、都市部の需要地点の Cutoff_Miles 値を 2 に設定することでモデリングできます。
デフォルトでは、解析にカットオフ値は使用されません。
|
Double
|
|
number_of_facilities_to_find
(オプション)
|
解析時に検出する施設の数。 デフォルト値は 1 です。
検出する必要のある施設の数が必須施設よりも多い場合、FacilityType 値が 必須 に設定されている施設は常にソリューションに含められ、残りの検出する必要のある施設は候補施設から選択されます。
解析前に FacilityType 値が 選択済み に設定されている施設は、解析時には候補施設として処理されます。
MINIMIZE_FACILITIES 解析タイプではカバーエリアが最大になるような最小数の施設の配置が検索されるため、このパラメーター値は考慮されません。
TARGET_MARKET_SHARE 解析タイプでは指定された市場シェアの確保に必要な最小数の施設を検索するため、このパラメーター値はオーバーライドされます。
|
Long
|
|
decay_function_type
(オプション)
|
施設と需要地点の間のネットワーク コストの変換に使用される式。 このパラメーターを コスト変換関数パラメーター値 パラメーターとともに使用して、施設と需要地点の間のネットワーク インピーダンスが、解析でどの施設が選択されるかに影響する度合いを指定します。
需要地点には ImpedanceTransformation プロパティがあり、これが設定されていると、解析レイヤーの コスト変換関数パラメーター値 パラメーターが需要地点ごとにオーバーライドされます。 都市部の住民と農村部の住民で異なるコスト変換関数を指定しなければならない場合があります。 これは、解析レイヤーのインピーダンス変換を農村部の住民に適合するように設定し、都市部にある個々の需要地点のインピーダンス変換を都市部の住民に適合するように設定することでモデリングできます。
LINEAR—施設および需要地点間の変換されたネットワーク インピーダンスは 2 点間の最短パスのネットワーク インピーダンスと同じです。 このオプションにより、インピーダンス パラメーターは常に 1 に設定されます。 これがデフォルトです。
POWER—施設および需要地点間の変換されたネットワーク インピーダンスは、最短パスのネットワーク インピーダンスをインピーダンス パラメーターに指定された値でべき乗した値に相当します。 正の値のインピーダンス パラメーターとともに、このオプションを使用して、近傍の施設の加重を大きくします。
EXPONENTIAL—施設および需要地点間の変換されたネットワーク インピーダンスは、数学定数 e を最短パスのネットワーク インピーダンスにインピーダンス パラメーターに掛けた値でべき乗した値に相当します。 正の値のインピーダンス パラメーターとともに、このオプションを使用して、近傍の施設の加重を非常に大きくします。指数変換はインピーダンス カットオフと組み合わせてよく使用されます。
|
String
|
|
decay_function_parameter_value
(オプション)
|
decay_function_type パラメーターで指定された計算式のパラメーター値。 decay_function_type パラメーターが LINEAR に設定されている場合、このパラメーターの値は無視されます。 POWER または EXPONENTIAL オプションに設定されている場合、値はゼロ以外である必要があります。
需要地点には ImpedanceTransformation プロパティがあり、これが設定されていると、解析レイヤーの decay_function_parameter_value パラメーターが需要地点ごとにオーバーライドされます。 都市部の住民と農村部の住民で異なるコスト変換関数を指定しなければならない場合があります。 これは、解析レイヤーのインピーダンス変換を農村部の住民に適合するように設定し、都市部にある個々の需要地点のインピーダンス変換を都市部の住民に適合するように設定することでモデリングできます。
|
Double
|
|
target_market_share
(オプション)
|
problem_type パラメーターが TARGET_MARKET_SHARE に設定されているときに、解析に使用する目標市場シェア (パーセント)。 これは、解析対象の施設で獲得したい総需要加重に占める割合です。 解析では、この数値で指定される目標市場シェアを獲得するのに必要な最小数の施設が選択されます。
|
Double
|
|
capacity
(オプション)
|
problem_type パラメーターが MAXIMIZE_CAPACITATED_COVERAGE に設定されている場合の施設のデフォルトの容量。 このパラメーターは他の解析タイプでは無視されます。
施設には Capacity プロパティを設定できます。このプロパティに NULL 以外の値を設定すると、施設の capacity パラメーターの値よりも優先されます。
|
Double
|
|
time_of_day
(オプション)
|
出発日時。 出発時間は、travel_direction が TO_FACILITIES または FROM_FACILITIES のどちらに設定されているかに応じて、施設からの出発時間または需要地点からの出発時間になります。
交通量ベースのインピーダンス属性を選択した場合、ここで指定した時刻での動的な交通状況に対する解決策が生成されます。 日時は、2012/05/14 10:30 のように指定できます。
特定の静的な日付の代わりに曜日または現在の日付をモデル化するには、次のいずれかの特殊な日付を使用するように解析を構成します。
Today—12/30/1899
Sunday—12/31/1899
Monday—1/1/1900
Tuesday—1/2/1900
Wednesday—1/3/1900
Thursday—1/4/1900
Friday—1/5/1900
Saturday—1/6/1900
ネットワーク解析での日時の使用と解釈の詳細
|
Date
|
|
time_zone
(オプション)
|
時刻 パラメーターのタイム ゾーン。
LOCAL_TIME_AT_LOCATIONS—時刻パラメーターが、施設または需要地点が位置するタイム ゾーンを表します。 移動方向が施設から需要地点へとなっている場合、これが施設のタイム ゾーンです。 移動方向が需要地点から施設へとなっている場合、これが需要地点のタイム ゾーンです。 これがデフォルトです。
UTC—時刻パラメーターが、UTC (協定世界時) を参照します。 特定の時刻 (たとえば今) に最適の位置を選択したいが、施設または需要地点のタイム ゾーンがわからない場合は、このオプションを選択します。
|
String
|
|
line_shape
(オプション)
|
出力ライン形状を指定します。
指定した出力形状のタイプに関係なく、常に最適なルートはユークリッド距離ではなくネットワーク インピーダンスによって決定されます。 これは、ルート形状のみが異なり、ネットワークの基となっているトラバースは同じであることを意味します。
|
String
|
|
accumulate_attributes
[accumulate_attributes,...]
(オプション)
|
解析中に累積されるコスト属性のリスト。 これらの累積属性は、参考情報としてのみ使用されます。解析では、指定されている移動モードで使用されるコスト属性のみが使用されます。
累積されるコスト属性ごとに、ネットワーク解析の出力フィーチャに Total_ [Impedance] プロパティが入力されます。
このパラメーターは、ネットワーク データ ソースが ArcGIS Online サービスであるか、ネットワーク データ ソースが累積をサポートしていないバージョンの Portal for ArcGIS のサービスである場合には使用できません。
|
String
|
|
ignore_invalid_locations
(オプション)
|
無効な入力ロケーションを除外するかどうかを指定します。 通常、ネットワーク上で特定できないロケーションは無効になります。 無効なロケーションを除外する場合は、そのロケーションがスキップされ、残りのロケーションを使用して解析が実行されます。
|
Boolean
|
|
analysis_geodatabase
(オプション)
|
新しいネットワーク解析レイヤーのサブレイヤー データが格納されるファイル ジオデータベース ワークスペース。 このパラメーターが指定されていない場合、サブレイヤー データは、通常プロジェクト ジオデータベースである 現在のワークスペース ジオプロセシング環境に作成されます。
ネットワーク解析レイヤーの解析データ ソースの詳細
|
Workspace
|
|
analysis_feature_dataset_name
(オプション)
|
ネットワーク解析レイヤーのサブレイヤー データを格納するために、このツールが解析ジオデータベースに作成する新しいフィーチャ データセットに使用する名前。 指定しない場合、ランダムな一意の名前を使用してフィーチャ データセットが作成されます。
ネットワーク解析レイヤーの解析データ ソースの詳細
|
String
|
派生した出力
|
名前
|
説明
|
データ タイプ
|
|
out_network_analysis_layer
|
新しく作成されたネットワーク解析レイヤー。
|
Network Analyst Layer
|
コードのサンプル
MakeLocationAllocationAnalysisLayer の例 1 (Python ウィンドウ)
必須パラメーターのみを使用して、ツールを実行します。
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationAnalysisLayer(network, "StoreLocations")
MakeLocationAllocationAnalysisLayer の例 2 (Python ウィンドウ)
すべてのパラメーターを使用してツールを実行します。
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationAnalysisLayer(network, "NewStores",
"Driving Time", "TO_FACILITIES",
"MAXIMIZE_ATTENDANCE", 3, 5, "POWER", 2, "",
"", "1/1/1900 9:00 AM", "UTC",
"STRAIGHT_LINES", ["TravelTime", "Meters"])
MakeLocationAllocationAnalysisLayer の例 3 (ワークフロー)
次のスタンドアロン Python スクリプトは、MakeLocationAllocationAnalysisLayer 関数を使用して小売店チェーンの売上を最大化するための店舗の場所を選択する方法を示しています。
# Name: MakeLocationAllocationAnalysisLayer_Workflow.py
# Description: Choose the store locations that would generate the most business
# for a retail chain. For this scenario, we will perform the
# location-Allocation analysis using the maximize attendance
# problem type.
# Requirements: Network Analyst extension
#Import system modules
import arcpy
from arcpy import env
import os
try:
#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/SanFrancisco.gdb"
network = os.path.join(input_gdb, "Transportation", "Streets_ND")
layer_name = "NewStoreLocations"
travel_mode = "Driving Time"
facilities = os.path.join(input_gdb, "Analysis", "CandidateStores")
required_facility = os.path.join(input_gdb, "Analysis", "ExistingStore")
demand_points = os.path.join(input_gdb, "Analysis", "TractCentroids")
output_layer_file = os.path.join(output_dir, layer_name + ".lyrx")
#Create a new location-allocation layer. In this case, the demand travels to
#the facility. We wish to find 3 potential store locations out of all the
#candidate store locations using the maximize attendance model.
result_object = arcpy.na.MakeLocationAllocationAnalysisLayer(network,
layer_name, travel_mode, "TO_FACILITIES",
"MAXIMIZE_ATTENDANCE", cutoff=20,
number_of_facilities_to_find=3)
#Get the layer object from the result object. The location-allocation layer
#can now be referenced using the layer object.
layer_object = result_object.getOutput(0)
#Get the names of all the sublayers within the location-allocation layer.
sublayer_names = arcpy.na.GetNAClassNames(layer_object)
#Stores the layer names that we will use later
facilities_layer_name = sublayer_names["Facilities"]
demand_points_layer_name = sublayer_names["DemandPoints"]
#Load the candidate store locations as facilities using default search
#tolerance and field mappings.
arcpy.na.AddLocations(layer_object, facilities_layer_name, facilities, "",
"")
#Load the existing store location as the required facility. Use the field
#mappings to set the facility type to requried. We need to append this
#required facility to existing facilities.
field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
facilities_layer_name)
field_mappings["FacilityType"].defaultValue = 1
arcpy.na.AddLocations(layer_object, facilities_layer_name,
required_facility, field_mappings, "",
append="APPEND")
#Load the tract centroids as demand points using default search tolerance
#Use the field mappings to map the Weight property from POP2000 field.
demand_field_mappings = arcpy.na.NAClassFieldMappings(layer_object,
demand_points_layer_name)
demand_field_mappings["Weight"].mappedFieldName = "POP2000"
arcpy.na.AddLocations(layer_object, demand_points_layer_name, demand_points,
demand_field_mappings, "")
#Solve the location-allocation layer
arcpy.na.Solve(layer_object)
#Save the solved location-allocation layer as a layer file on disk
layer_object.saveACopy(output_layer_file)
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))