Network Analyst のライセンスで利用可能。
概要
ロケーション アロケーション ネットワーク解析レイヤーを作成し、解析プロパティを設定します。ロケーション アロケーション解析レイヤーは、複数の候補地から指定した数の施設を選択し、需要を施設に最適で効率的な方法で割り当てられるようにします。
レガシー:
このツールは非推奨ツールです。この機能は、[ロケーション-アロケーション解析レイヤーの作成 (Make Location-Allocation Analysis Layer)] ツールに置き換えられています。
使用法
このツールで解析レイヤーを作成した後は、[ロケーションの追加 (Add Locations)] ツールを使用して解析レイヤーにネットワーク解析オブジェクトを追加し、[解析の実行 (Solve)] ツールを使用して解析を実行し、[レイヤー ファイルの保存 (Save To Layer File)] ツールを使用して結果をディスクに保存することができます。
このツールをジオプロセシング モデルに使用するときは、モデルをツールとして動作させる場合、出力ネットワーク解析レイヤーにモデル パラメーターを作成する必要があります。そうしないと、出力レイヤーはマップのコンテンツに追加されません。
構文
arcpy.na.MakeLocationAllocationLayer(in_network_dataset, out_network_analysis_layer, impedance_attribute, {loc_alloc_from_to}, {loc_alloc_problem_type}, {number_facilities_to_find}, {impedance_cutoff}, {impedance_transformation}, {impedance_parameter}, {target_market_share}, {accumulate_attribute_name}, {UTurn_policy}, {restriction_attribute_name}, {hierarchy}, {output_path_shape}, {default_capacity}, {time_of_day})
パラメーター | 説明 | データ タイプ |
in_network_dataset | ロケーション アロケーション解析が実行されるネットワーク データセット。 | Network Dataset Layer |
out_network_analysis_layer | 作成するロケーション アロケーション ネットワーク解析レイヤーの名前。 | String |
impedance_attribute | 解析でインピーダンスとして使用されるコスト属性。 | String |
loc_alloc_from_to (オプション) | ネットワーク コストを計算するときに施設と需要地点間で移動する方向を指定します。
このオプションを使用することで、移動する方向に基づいた一方通行規制およびさまざまなインピーダンスを考慮した、ネットワーク上の施設への需要地点の割り当てが行われるようになります。たとえば、需要地点から施設への移動時間は 15 分であっても、施設から需要地点への移動時間は 10 分である場合があります。 | String |
loc_alloc_problem_type (オプション) | 実行する解析タイプ。解析タイプは配置されている施設の種類に応じて選択します。それは施設の種類によって、優先事項と制約が異なるからです。
| String |
number_facilities_to_find (オプション) | 解析時に検出する施設の数を指定します。 検出する必要のある施設の数が必須施設よりも多い場合、FacilityType 値が [必須] に設定されている施設は常にソリューションに含められ、残りの検出する必要のある施設は候補施設から選択されます。 解析前に FacilityType 値が [選択済み] に設定されている施設は、解析時には候補施設として処理されます。 MINIMIZE_FACILITIES 解析タイプではカバーエリアが最大になるような最小数の施設の配置を決定するため、パラメーター値は考慮されません。 TARGET_MARKET_SHARE 解析タイプでは指定された市場シェアの確保に必要な最小数の施設を検索するため、パラメーター値はオーバーライドされます。 | Long |
impedance_cutoff (オプション) |
[インピーダンス カットオフ] は、需要地点を施設に割り当てる最大インピーダンスを指定します。最大インピーダンスは、ネットワークに沿った最小コスト パスによって計測されます。需要地点がカットオフの範囲外にある場合、それは割り当てられません。このプロパティは、店舗に訪れるために顧客が移動することをいとわない最大距離や、消防署がコミュニティのすべての人に到達するのにかかっても許容される最長時間などをモデリングするのに使用することもできます。 需要地点には Cutoff_[Impedance] プロパティがあり、これが設定されていると、解析レイヤーの [インピーダンス カットオフ] プロパティが上書きされます。たとえば、施設に到達するために移動してもいとわない距離が農村部の住民の場合は最大 10 マイルであるのに対し、都市部の住民の場合は最大 2 マイルであるとします。この振舞いは、解析レイヤーのインピーダンス カットオフ値を 10 に設定し、都市部の需要地点の Cutoff_Miles 値を 2 に設定することでモデリングできます。 | Double |
impedance_transformation (オプション) | これは、施設と需要地点の間のネットワーク コストを変換するための式を設定します。[インピーダンス パラメーター] とともに使用されるこのプロパティは、施設と需要地点の間のネットワーク インピーダンスが、解析でどの施設が選択されるかに影響する度合いを指定します。
需要地点には ImpedanceTransformation プロパティがあり、これが設定されていると、解析レイヤーの [インピーダンス変換] プロパティがオーバーライドされます。都市部の住民と農村部の住民で異なるインピーダンス変換を指定する必要がある場合があります。これは、解析レイヤーのインピーダンス変換を農村部の住民に適合するように設定し、都市部の需要地点のインピーダンス変換を都市部の住民に適合するように設定することでモデリングできます。 | String |
impedance_parameter (オプション) | [インピーダンス変換] パラメーターで指定された計算式へのパラメーター値を提供します。パラメーター値はインピーダンス変換が [LINEAR] のタイプである場合、無視されます。[POWER] または [EXPONENTIAL] のインピーダンス変換の場合、値は 0 以外である必要があります。 需要地点には ImpedanceParameter プロパティがあり、これが設定されていると、解析レイヤーの [インピーダンス パラメーター] プロパティが上書きされます。都市部の住民と農村部の住民で異なるインピーダンス パラメーターを指定する必要がある場合があります。これは、解析レイヤーのインピーダンス変換を農村部の住民に適合するように設定し、都市部の需要地点のインピーダンス変換を都市部の住民に適合するように設定することでモデリングできます。 | Double |
target_market_share (オプション) | ロケーション アロケーション解析タイプのパラメーターが TARGET_MARKET_SHARE に設定されているときに、解析に使用する目標市場シェアをパーセントで指定します。これは、解析対象の施設で獲得したい総需要ウェイトに占める割合です。この数値で指定される目標市場シェアを獲得するのに必要な最小数の施設を選択します。 | Double |
accumulate_attribute_name [accumulate_attribute_name,...] (オプション) | 解析中に累積されるコスト属性のリスト。これらの累積属性は、参考情報としてのみ使用されます。解析では、[インピーダンス属性] パラメーターで指定されているコスト属性のみを使用してルートを計算します。 累積されるコスト属性ごとに、解析で出力されたルートに Total_[インピーダンス] プロパティが追加されます。 | String |
UTurn_policy (オプション) | ジャンクションで使用される U ターン ポリシーを指定します。U ターンを許可するということは、解析においてジャンクションで方向転換し、同じ道路を引き返すことができるということを意味します。 ジャンクションが道路の交差と行き止まりを表すことを前提に、さまざまな車両が、一部のジャンクションでは方向転換でき、他のジャンクションでは方向転換できない、というように設定できます。これは、ジャンクションが交差と行き止まりのどちらを表すかによって変わります。これに対応するには、ジャンクションに接続するエッジの数 (ジャンクションでのノードへの接続数) によって、暗黙的に U ターン ポリシーを指定します。以下では、このパラメーターで選択できる値と、ジャンクションので接続におけるそれぞれの意味について示します。
ヒント:U ターン ポリシーをさらに正確に定義する必要がある場合、グローバル ターン遅延エバリュエーターをネットワーク コスト属性に追加するか、すでに存在する場合はそれを調整することを検討してください。その際、逆ターンの設定には特に注意が必要です。また、ネットワーク ロケーションの CurbApproach プロパティも設定できます。 | String |
restriction_attribute_name [restriction_attribute_name,...] (オプション) | 解析中に適用される規制属性のリスト。 | String |
hierarchy (オプション) |
解析を実行するネットワーク データセットに使用する階層属性が定義されていない場合、パラメーターは使用されません。 | Boolean |
output_path_shape (オプション) |
| String |
default_capacity (オプション) | [loc_alloc_problem_type] パラメーターが [MAXIMIZE_CAPACITATED_COVERAGE] に設定されている場合、施設のデフォルトの容量を指定します。このパラメーターは他の解析タイプでは無視されます。 施設には Capacity プロパティがあり、このプロパティに NULL 以外の値が設定されている場合は、その施設の default_capacity パラメーターよりも優先されます。 | Double |
time_of_day (オプション) | 出発の日時を示します。出発時間の場所は、移動方向が需要地点から施設か、施設から需要地点かに応じて、施設または需要地点にできます。 交通量ベースのインピーダンス属性を選択した場合、ここで指定した時刻での動的な交通状況に対する解決策が生成されます。日時は、2012/05/14 10:30 のように指定できます。 特定の日付を使用する代わりに、次の日付を使用して曜日を指定することができます。
| Date |
派生した出力
名前 | 説明 | データ タイプ |
output_layer | 新しく作成されたネットワーク解析レイヤー。 | Network Analyst レイヤー |
コードのサンプル
必須パラメーターのみを使用してツールを実行します。
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationLayer(network, "StoreLocations", "TravelTime")
すべてのパラメーターを使用してツールを実行します。
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
arcpy.na.MakeLocationAllocationLayer(network, "NewStores", "TravelTime",
"DEMAND_TO_FACILITY", "MAXIMIZE_ATTENDANCE",
3, 5, "POWER", 2, "",
["TravelTime", "Meters"], "ALLOW_UTURNS",
["Oneway"], "NO_HIERARCHY",
"STRAIGHT_LINES", "", "9 AM")
次のスタンドアロン Python スクリプトは、MakeLocationAllocationLayer ツールを使用して小売店チェーンの売り上げを最大化するための店舗の場所を選択する方法を示しています。
# Name: MakeLocationAllocationLayer_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 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"
impedance = "TravelTime"
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.MakeLocationAllocationLayer(network, layer_name,
impedance,
"DEMAND_TO_FACILITY",
"MAXIMIZE_ATTENDANCE", 3,
5, "LINEAR")
#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, "",
"", exclude_restricted_elements = "EXCLUDE")
#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",
exclude_restricted_elements="EXCLUDE")
#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, "",
exclude_restricted_elements="EXCLUDE")
#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))
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい