ロケーション-アロケーション レイヤの作成(Make Location-Allocation Layer) (Network Analyst)
サマリ
ロケーション アロケーション ネットワーク解析レイヤを作成し、解析プロパティを設定します。ロケーション アロケーション解析レイヤは、複数の候補地から指定した数の施設を選択し、需要を施設に最適で効率的な方法で割り当てられるようにします。
使用法
このツールで解析レイヤを作成した後は、[ロケーションの追加(Add Locations)] ツールを使用して解析レイヤにネットワーク解析オブジェクトを追加し、[解析の実行(Solve)] ツールを使用して解析を実行し、[レイヤ ファイルの保存(Save To Layer File)] ツールを使用して結果をディスクに保存することができます。
このツールをジオプロセシング モデルに使用するときは、モデルをツールとして動作させる場合、出力ネットワーク解析レイヤにモデル パラメータを作成する必要があります。作成しない場合、出力レイヤは ArcMap のコンテンツ ウィンドウに追加されません。
構文
パラメータ | 説明 | データ タイプ |
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 (オプション) |
[インピーダンス変換] パラメータで指定された計算式へのパラメータ値を提供します。パラメータ値はインピーダンス変換がリニアのタイプである場合、無視されます。乗数または指数関数のインピーダンス変換の場合、値は 0 以外である必要があります。 需要地点には ImpedanceParameter プロパティがあり、これが設定されていると、解析レイヤの [インピーダンス パラメータ] プロパティが上書きされます。都市部の住民と農村部の住民で異なるインピーダンス パラメータを指定する必要がある場合があります。これは、解析レイヤのインピーダンス変換を農村部の住民に適合するように設定し、都市部の需要地点のインピーダンス変換を都市部の住民に適合するように設定することでモデリングできます。 | Double |
target_market_share (オプション) |
ロケーション アロケーション解析タイプのパラメータが TARGET_MARKET_SHARE(目標市場シェア)に設定されているときに、解析に使用する目標市場シェアをパーセントで指定します。これは、解析対象の施設で獲得したい総需要ウェイトに占める割合です。ソルバは、この数値で指定される目標市場シェアを獲得するのに必要な最小数の施設を選択します。 | Double |
accumulate_attribute_name [accumulate_attribute_name,...] (オプション) |
解析中に累積されるコスト属性のリスト。これらの累積属性は、参考情報としてのみ使用されます。ソルバは、[インピーダンス] 属性パラメータで指定されているコスト属性のみを使用してルートを計算します。 For each cost attribute that is accumulated, a Total_[Impedance] property is added to the routes that are output by the solver. | String |
UTurn_policy (オプション) |
ストップ間でのネットワーク移動中に発生する可能性があるジャンクションでの U ターンを規制または許可します。
| String |
restriction_attribute_name [restriction_attribute_name,...] (オプション) |
解析中に適用される規制属性のリスト。 | String |
hierarchy (オプション) |
解析を実行するネットワーク データセットに使用する階層属性が定義されていない場合、パラメータは使用されません。この場合、「#」をパラメータ値として使用します。 | Boolean |
output_path_shape (オプション) |
| String |
コードのサンプル
必須パラメータのみを使用してツールを実行します。
import arcpy arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb" arcpy.MakeLocationAllocationLayer_na("Transportation/Streets_ND", "StoreLocations","Minutes")
すべてのパラメータを使用してツールを実行します。
import arcpy arcpy.env.workspace = "C:/ArcTutor/Network Analyst/Tutorial/SanFrancisco.gdb" arcpy.MakeLocationAllocationLayer_na("Transportation/Streets_ND","NewStores", "Minutes","DEMAND_TO_FACILITY", "MAXIMIZE_ATTENDANCE",3,5,"POWER",2,"", ["Minutes","Meters"],"ALLOW_UTURNS", ["Oneway"],"NO_HIERARCHY","STRAIGHT_LINES")
次のスタンドアロン 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 try: #Check out the Network Analyst extension license arcpy.CheckOutExtension("Network") #Set environment settings env.workspace = "C:/data/SanFrancisco.gdb" env.overwriteOutput = True #Set local variables inNetworkDataset = "Transportation/Streets_ND" outNALayer = "NewStoreLocations" impedanceAttribute = "TravelTime" inFacilities = "Analysis/CandidateStores" inDemandPoints = "Analysis/TractCentroids" outLayerFile = "C:/data/output" + "/" + outNALayer + ".lyr" #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. arcpy.MakeLocationAllocationLayer_na(inNetworkDataset, outNALayer, impedanceAttribute,"DEMAND_TO_FACILITY", "MAXIMIZE_ATTENDANCE",3,5, "LINEAR") #Load the candidate store locations as facilities arcpy.AddLocations_na(outNALayer,"Facilities",inFacilities,"","") #Load the tract centroids as demand points arcpy.AddLocations_na(outNALayer,"Demand Points",inDemandPoints,"","") #Solve the location-allocation layer arcpy.Solve_na(outNALayer) #Save the solved location-allocation layer as a layer file on disk with #relative paths arcpy.SaveToLayerFile_management(outNALayer,outLayerFile,"RELATIVE") 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)