概要
[ロケーション-アロケーションの解析 (Solve Location-Allocation)] ツールは、施設に最大の需要を割り当て、全体の移動が最小化されるように需要地点を入力施設に割り当てることで、一連の入力位置から最適な場所を選択します。
このツールへの入力には、施設 (商品やサービスを提供) および需要地点 (商品やサービスを消費) があります。目的は、需要地点に最も効率よく商品やサービスを提供する施設を検索することです。このために、異なる施設に需要地点が割り当てられる複数の方法が解析されます。ソリューションは、施設に最大の需要を割り当て、全体の移動時間と距離を最小化するシナリオです。出力には、ソリューション施設、割り当てられた施設に関連付けられた需要地点、需要地点と施設を接続するラインが含まれます。
ロケーション-アロケーション ツールは、特定の解析タイプを処理するよう設定できます。次のようなケースがあります。
ある小売店が、エリア内の小売市場の 10 パーセントを獲得するために開発すべき可能性のある店舗場所を知りたい場合があります。
消防局が、応答時間 4 分以内にコミュニティの 90 パーセントに到着するために、どこに消防署を配置すべきかを判断したい場合があります。
警察署が、過去に夜間の犯罪が発生した場所に事前に人員を配置させたい場合があります。
豪雨の後、災害対策局が、患者の仕分け施設を設営し、患者受け入れを制限して、被災者に対応するための最適な場所を見つけたい場合があります。
注意:
このツールの最新情報については、Web ヘルプの最新エディションでこのトピックをご参照ください。ArcGIS Online このようにサービスに対する機能的な更新を定期的に行っているため、インストールされているヘルプは最新でない可能性があります。
図
使用法
オンライン ツールボックスに収容されているツールは、ArcGIS Online でホストしているデータと機能を使って解析する ArcGIS Onlineジオプロセシング サービスです。
[計測単位] パラメーターの値が時間の単位である場合は、移動時間に基づいて最適な施設が選択されます。使用する単位が距離の単位である場合は、移動距離に基づいて選択されます。
ツールを正しく実行するには、少なくとも 1 つの施設と 1 つの需要地点を指定する必要があります。最大 1,000 の施設と 10,000 の需要地点を読み込むことができます。
最大で 250 のポイント バリアを追加できます。ライン バリアまたはポリゴン バリアは必要なだけ追加できますが、ライン バリアが交差する道路フィーチャは 500 以下にする必要があり、ポリゴン バリアが交差するフィーチャは 2,000 以下にする必要があります。
結果を短時間で生成できるように、解析時に道路階層を使用することもできます。ただし、ソリューションの精度は最適な結果よりも劣ります。
[階層を使用] パラメーターがオン (True) であるかどうかにかかわらず、需要地点または施設を表すフィーチャのペア間の直線距離が 50 マイル (80.46 キロメートル) マイルを超えている場合は、常に階層が使用されます。
[移動モード] が [徒歩] に設定されている場合、または [カスタム] に設定されていて [徒歩] 規制が使用されている場合は、需要地点または施設を表すフィーチャのペア間の直線距離は 27 マイル (43.45 キロメートル) を超えることはできません。
入力したポイントと通行可能な最も近い道路の距離が 12.42 マイル (20 キロメートル) を超える場合、そのポイントは解析から除外されます。
このサービスを使用すると、クレジットが消費されます。詳細については、「サービス クレジットの概要」をご参照ください。
構文
SolveLocationAllocation(Facilities, Demand_Points, Measurement_Units, {Analysis_Region}, {Problem_Type}, {Number_of_Facilities_to_Find}, {Default_Measurement_Cutoff}, {Default_Capacity}, {Target_Market_Share}, {Measurement_Transformation_Model}, {Measurement_Transformation_Factor}, {Travel_Direction}, {Time_of_Day}, {Time_Zone_for_Time_of_Day}, {UTurn_at_Junctions}, Point_Barriers, Line_Barriers, Polygon_Barriers, {Use_Hierarchy}, Restrictions, {Attribute_Parameter_Values}, {Allocation_Line_Shape}, {Travel_Mode}, {Impedance}, {Save_Output_Network_Analysis_Layer}, {Overrides}, {Time_Impedance}, {Distance_Impedance}, {Output_Format})
パラメーター | 説明 | データ タイプ |
Facilities | 解析中に選択される 1 つまたは複数の施設を指定します。この解析は、指定された解析タイプおよび基準に従って最も効率的な方法で需要を割り当てるのに最適な施設を特定します。 競合の解析で、競合店のあるなしにかかわらず最適な場所を見つけようとする場合は、競合店の施設もここで指定します。 施設を定義する場合は、次の属性を使用して、各施設のプロパティ (施設の名前やタイプなど) を設定できます。 Name 施設の名前。施設がソリューションの一部である場合、名前は出力アロケーション ラインの名前に含まれます。 FacilityType 施設が候補施設、必須施設、競合施設のいずれであるかを指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
Weight 施設に対する相対的なウェイトの割り当て。これは、1 つの施設のもう 1 つの施設と比較した場合の魅力、利用価値、または傾向を格付けするのに使用されます。 たとえば、ある施設に対して値を 2.0 に設定すると、2 対 1 の割合で、もう 1 つの施設ではなくその施設で買い物をすることを好む顧客を獲得できます。施設のウェイトに影響する可能性のある要因には、面積、周辺地域、建物の築年数などがあります。Weight 値 (1 を除く) は、[市場シェアの最大化] 解析タイプと [目標市場シェア] 解析タイプのみで考慮されます。他の解析タイプでは無視されます。 Cutoff 指定された施設の需要地点の検索を停止するインピーダンス値。需要地点は、ここに示される値を越える施設には割り当てられません。 この属性では、需要地点ごとに異なるカットオフ値を指定できます。たとえば、施設に到達するために移動してもいとわない距離が農村部の住民の場合は最大 10 マイルであるのに対し、都市部の住民の場合は最大 2 マイルであるとします。この振舞いは、農村部のすべての需要地点の Cutoff 値を 10 に設定し、都市部の需要地点の Cutoff 値を 2 に設定することでモデリングできます。 Capacity Capacity フィールドは [カバー容量の最大化] 解析タイプに固有のプロパティで、他の解析タイプでは無視されます。 Capacity は、施設が供給可能な加重需要の量を指定します。施設の容量を超える需要は、施設のデフォルトの計測カットオフの範囲内であっても、その施設には割り当てられません。 Capacity フィールドに割り当てられた値は、施設の [デフォルトの容量] パラメーター (Python では Default_Capacity) よりも優先されます。 CurbApproach 車両が施設に到着する方向または施設から出発する方向を指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
CurbApproach 属性は、米国の右側通行の標準と英国の左側通行の標準の両方に対応するように設計されています。まず、施設が車両の左側にあるとします。これは、車両が移動するのが道路の左側であるか右側であるかに関係なく、常に左側にあります。右側通行か左側通行かに応じて異なるのは、2 つの方向のうちどちらから施設に到着するかです。つまり、結局のところ車両の右側または左側になります。たとえば、施設に到着するときに、車両とインシデントの間に交通レーンがない方がいい場合は、米国では 1 (車両の右側) を選択し、英国では 2 (車両の左側) を選択します。 Bearing ポイントが移動している方向。単位は度で、北を基準に時計回りに測定されます。このフィールドは BearingTol フィールドと組み合わせて使用されます。 通常、方位データは、GPS 受信機を備えたモバイル デバイスから自動的に送信されます。歩行者や車両などの移動している入力場所を読み込んでいる場合は、方位データを含めてみてください。 このフィールドを使用すると、たとえば、車両が交差点や高架の近くにいる場合に、ロケーションが間違ったエッジに追加されるのを避けることができます。方位は、ツールがポイントを道路のどちら側に配置するかを決定する際にも役立ちます。 BearingTol 方位許容値は、Bearing フィールドを使用して移動ポイントをエッジに配置するときに、許容される方位の範囲を作成します。Bearing フィールドの値が、エッジの方位許容値から生成される許容範囲内にある場合は、ポイントをその場所にネットワーク ロケーションとして配置できます。許容範囲から外れている場合は、次に近いエッジの最も近いポイントが評価されます。 単位は度で、デフォルト値は 30 です。値は 0 より大きく 180 未満でなければなりません。値が 30 の場合、Network Analyst がネットワーク ロケーションをエッジに追加しようとすると、方位値の許容範囲がエッジの両側 (左と右) に 15 度ずつ、どちらもエッジのデジタイズされた方向に生成されます。 NavLatency このフィールドは、Bearing と BearingTol の値が存在する場合にのみ、解析処理で使用されます。ただし、Bearing と BearingTol の値が存在する場合でも、NavLatency 値の入力は任意です。NavLatency は、移動中の車両からサーバーに GPS 情報が送信されてから、車両のナビゲーション デバイスが処理されたルートを受信するまでの予想経過時間を示します。 NavLatency の時間単位は、解析オブジェクトの timeUnits プロパティで指定された単位と同じです。 | Feature Set |
Demand_Points | 1 つまたは複数の需要地点を指定します。ここで指定する需要地点に対して提供されるサービスに基づいて、最適な施設が解析によって特定されます。 一般的に、需要地点とは、施設が提供する商品とサービスを必要とする人または物を表すロケーションのことです。需要地点は、その内部に居住している住民の数によって加重された郵便番号重心であったり、予測されるこれらの住民による消費の量によって加重された郵便番号重心であったりします。需要地点は、ビジネス顧客を表すこともあります。ビジネスに供給する在庫の回転率が高い場合、これらのビジネスのウェイトは、回転率が低いビジネスよりも重くなります。 需要地点を指定する場合は、次の属性を使用して、各需要地点のプロパティ (需要地点の名前やウェイトなど) を設定できます。 Name 需要地点の名前。需要地点がソリューションの一部である場合、名前は出力アロケーション ラインの名前に含まれます。 GroupName 需要地点が属しているグループの名前。このフィールドは、[カバー容量の最大化]、[目標市場シェア]、および [市場シェアの最大化] の各解析タイプでは無視されます。 複数の需要地点が 1 つのグループ名を共有している場合、解析はそのグループに属するすべての需要地点を同じ施設に割り当てます。距離カットオフなどの制約により、グループ内の需要地点のいずれかが同じ施設に到達できない場合、いずれの需要地点も割り当てられません。 Weight 需要地点の相対加重。ウェイトの値が 2.0 であれば、その需要地点は値が 1.0 の需要地点よりも 2 倍重要であることを示します。たとえば需要地点が世帯を示す場合、ウェイトは各世帯の人数を示します。 Cutoff 指定された施設の需要地点の検索を停止するインピーダンス値。需要地点は、ここに示される値を越える施設には割り当てられません。 この属性では、需要地点ごとにカットオフ値を指定できます。たとえば、施設に到達するために移動してもいとわない距離が農村部の住民の場合は最大 10 マイルであるのに対し、都市部の住民の場合は最大 2 マイルであるとします。この振舞いは、農村部のすべての需要地点の Cutoff 値を 10 に設定し、都市部の需要地点の Cutoff 値を 2 に設定することでモデリングできます。 この属性値の単位は、[計測単位] パラメーターで指定されます。 この属性の値は、[デフォルトの計測カットオフ値] パラメーターを使用して、解析のデフォルト セットを上書きします。デフォルト値は Null です。この値では、すべての需要地点に対して、[デフォルトの計測カットオフ値] パラメーターで設定されたデフォルト値が使用されます。 ImpedanceTransformation この属性の値は、[計測変換モデル] パラメーターで解析のデフォルト セットを上書きします。 ImpedanceParameter この属性の値は、[計測変換係数] パラメーターで解析のデフォルト セットを上書きします。 CurbApproach 車両が需要地点に到着する方向または需要地点から出発する方向を指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
CurbApproach 属性は、米国の右側通行の標準と英国の左側通行の標準の両方に対応するように設計されています。まず、需要地点が車両の左側にあるとします。これは、車両が移動するのが道路の左側であるか右側であるかに関係なく、常に左側にあります。右側通行か左側通行かに応じて異なるのは、2 つの方向のうちどちらから需要地点に到着するかです。つまり、結局のところ車両の右側または左側になります。たとえば、需要地点に到着するときに、車両と需要地点の間に交通レーンがない方がいい場合は、米国では 1 (車両の右側) を選択し、英国では 2 (車両の左側) を選択します。 Bearing ポイントが移動している方向。単位は度で、北を基準に時計回りに測定されます。このフィールドは BearingTol フィールドと組み合わせて使用されます。 通常、方位データは、GPS 受信機を備えたモバイル デバイスから自動的に送信されます。歩行者や車両などの移動している入力場所を読み込んでいる場合は、方位データを含めてみてください。 このフィールドを使用すると、たとえば、車両が交差点や高架の近くにいる場合に、ロケーションが間違ったエッジに追加されるのを避けることができます。方位は、ツールがポイントを道路のどちら側に配置するかを決定する際にも役立ちます。 BearingTol 方位許容値は、Bearing フィールドを使用して移動ポイントをエッジに配置するときに、許容される方位の範囲を作成します。Bearing フィールドの値が、エッジの方位許容値から生成される許容範囲内にある場合は、ポイントをその場所にネットワーク ロケーションとして配置できます。許容範囲から外れている場合は、次に近いエッジの最も近いポイントが評価されます。 単位は度で、デフォルト値は 30 です。値は 0 より大きく 180 未満でなければなりません。値が 30 の場合、Network Analyst がネットワーク ロケーションをエッジに追加しようとすると、方位値の許容範囲がエッジの両側 (左と右) に 15 度ずつ、どちらもエッジのデジタイズされた方向に生成されます。 NavLatency このフィールドは、Bearing と BearingTol の値が存在する場合にのみ、解析処理で使用されます。ただし、Bearing と BearingTol の値が存在する場合でも、NavLatency 値の入力は任意です。NavLatency は、移動中の車両からサーバーに GPS 情報が送信されてから、車両のナビゲーション デバイスが処理されたルートを受信するまでの予想経過時間を示します。 NavLatency の時間単位は、解析オブジェクトの timeUnits プロパティで指定された単位と同じです。 | Feature Set |
Measurement_Units | 需要地点と施設間の移動時間または移動距離の計測に使用する単位を指定します。どこが加重需要が最大で、移動が最小であるかによって、最善の施設がツールによって検出されます。 出力アロケーション ラインでは、このパラメーターに指定する単位を含め、複数の単位で移動距離または移動時間が出力されます。 次のようなオプションがあります。
| String |
Analysis_Region (オプション) | 解析を実行する地域。このパラメーターに値を指定しない場合、入力ポイントの位置に基づいて地域名が自動的に計算されます。地域の名前は、地域名の自動検出が入力に対して正確ではない場合にのみ設定する必要があります。 地域を指定するには、次のいずれかの値を使用します。
レガシー:次の地域名は現在はサポートされておらず、今後のリリースで削除される予定です。廃止された地域名のいずれかを指定すると、サポートされている地域名がツールによって自動的に割り当てられます。
| String |
Problem_Type (オプション) | ロケーション-アロケーション解析の目的を指定します。デフォルトの目的は、インピーダンスの最小化です。
| String |
Number_of_Facilities_to_Find (オプション) | 検出する施設の数。デフォルト値は 1 です。 FacilityType フィールド値が 1 (必須) である施設が常に最初に選択されます。残りの施設は、FacilityType フィールド値が 2 である候補施設から選択されます。 解析前に FacilityType 値が 3 ([選択済み]) に設定されている施設は、解析時には候補施設として処理されます。 検出する施設の数が必要な施設の数より少ない場合、エラーが発生します。 目的の達成に必要な施設の最小数が決定されるため、[施設数の最小化] 解析タイプと [目標市場シェア] 解析タイプでは [検出する施設数] は無効です。 | Long |
Default_Measurement_Cutoff (オプション) | 需要地点と需要地点が割り当てられる施設間で許容される最大移動時間または移動距離。需要地点が施設のカットオフの範囲外にある場合、その施設には割り当てられません。 デフォルト値は、指定なしです。これは、カットオフ制限が適用されないことを表します。 このパラメーターの単位は、[計測単位] パラメーターで指定される単位と同じです。 移動時間または移動距離のカットオフは、道路に沿った最短距離の経路で計測されます。 このパラメーターは、店舗に訪れるために顧客が移動することをいとわない最大距離や、消防署がコミュニティのすべての人に到達するのにかかっても許容される最長時間などをモデリングするのに使用することもできます。 需要地点は Cutoff フィールドを含んでおり、これが設定されていると、[デフォルトの計測カットオフ値] パラメーターが上書きされます。たとえば、施設に到達するために移動してもいとわない距離が農村部の住民の場合は最大 10 マイルであるのに対し、都市部の住民の場合は最大 2 マイルであるとします。[計測単位] が [マイル] に設定されている場合、デフォルトの計測カットオフを「10」に設定し、都市部の需要地点の Cutoff フィールド値を「2」に設定することで、この動作をモデリングできます。 | Double |
Default_Capacity (オプション) | このパラメーターは、[カバー容量の最大化] 解析タイプのみで使用されます。解析ですべての施設に割り当てられるデフォルトの容量です。施設の Capacity フィールドに指定した値は、施設のデフォルトの容量よりも優先されます。 デフォルト値は 1 です。 | Double |
Target_Market_Share (オプション) | このパラメーターは、[目標市場シェア] 解析タイプのみで使用されます。これは、選択した必須施設で獲得したい総需要ウェイトに占める割合です。解析では、ここで指定される目標市場シェアを獲得するのに必要な最小数の施設が識別されます。 デフォルト値は 10 パーセントです。 | Double |
Measurement_Transformation_Model (オプション) | これは、施設と需要地点の間のネットワーク コストを変換するための式を設定します。[インピーダンス パラメーター] とともに使用されるこのパラメーターは、施設と需要地点の間のネットワーク インピーダンスが、解析でどの施設が選択されるかに影響する度合いを指定します。 次に、変換のオプションについて説明します。「d」は需要地点、「f」は施設です。インピーダンスとは、2 地点間の最短移動距離または移動時間を表します。したがって、インピーダンスdf は需要地点 d と施設 f の間の最短パス (時間または距離) であり、コストdf は施設と需要地点の間の変換された移動時間または移動距離です。ラムダ (λ) は、インピーダンス パラメーターを示します。[計測単位] パラメーターにより、移動時間と移動距離のどちらが解析されるかが指定されます。
このパラメーターで設定される値は、入力需要地点の ImpedanceTransformation フィールドを使用し、需要地点ごとに上書きできます。 | String |
Measurement_Transformation_Factor (オプション) | [計測変換モデル] パラメーターで指定された計算式へのパラメーター値を提供します。パラメーター値はインピーダンス変換がリニアのタイプである場合、無視されます。乗数または指数関数のインピーダンス変換の場合、値は 0 以外である必要があります。 デフォルト値は 1 です。 このパラメーターで設定される値は、入力需要地点の ImpedanceParameter フィールドを使用し、需要地点ごとに上書きできます。 | Double |
Travel_Direction (オプション) | 移動時間または移動距離を施設から需要地点への方向で計測するか、需要地点から施設への方向で計測するかを指定します。
移動時間または移動距離は、移動の方向によって異なる場合があります。地点 A から B の方向へ移動する場合、反対方向に移動する場合に比べて、一方通行やターン規制などにより、交通量が少なくなったり、経路が短くなったりする場合があるためです。たとえば、地点 A から B の方向に移動するのに 10 分かかる場合でも、反対方向に移動すると 15 分かかるということもあります。このように計測値が異なることにより、カットオフのために需要地点が特定の施設に割り当てられるかどうかが影響を受けたり、需要が分配される解析タイプで獲得される需要量が影響を受ける可能性があります。 消防署の場合、消防署 (施設) から緊急事態の場所 (需要地点) まで移動する時間が重視されるため、通常は施設から需要地点への方向で計測されます。小売店での管理の場合、買物客 (需要地点) が店舗 (施設) に到達するまでの時間が重視されるため、通常は需要地点から施設への方向で計測されます。 [移動方向] は、指定された開始時間の意味も決定します。詳細については、[時刻] パラメーターをご参照ください。 | String |
Time_of_Day (オプション) | 移動を開始する時刻。このパラメーターは、[計測単位] が時間ベースでない場合、無視されます。デフォルトでは、時間も日付も指定なしです。[時刻] が指定されない場合、解析時には一般的な速度 (通常は道路標識の速度制限) が使用されます。 交通状況は常にリアルタイムで変化しているため、それに伴って施設と需要地点間の移動時間が変動します。したがって、複数回の解析において異なる時間や日付を指定すると、需要の施設への割り当てられ方や結果としてどの施設が選択されるかが異なる可能性があります。 時刻は常に開始時間を表します。ただし、移動は施設から開始される場合と需要地点から開始される場合があるため、[移動方向] パラメーターで選択する値によって異なります。 [時刻のタイムゾーン] パラメーターは、この日時が UTC を表すか、施設または需要地点が位置するタイム ゾーンを表すかを指定します。 | Date |
Time_Zone_for_Time_of_Day (オプション) | [時刻] パラメーターのタイム ゾーンを指定します。デフォルトでは、現地になっています。
[時刻のタイムゾーン] パラメーター値にかかわらず、施設および需要地点が複数のタイム ゾーンにある場合は、次の規則が適用されます。
| String |
UTurn_at_Junctions (オプション) | ジャンクションでの U ターン ポリシーを指定します。U ターンを許可するということは、解析においてジャンクションで方向転換し、同じ道路を引き返すことができるということを意味します。 ジャンクションが道路の交差と行き止まりを表すことを前提に、さまざまな車両が、一部のジャンクションでは方向転換でき、他のジャンクションでは方向転換できない、というように設定できます。これは、ジャンクションが交差と行き止まりのどちらを表すかによって変わります。これに対応するには、ジャンクションに接続するエッジの数 (ジャンクションでのノードへの接続数) によって、暗黙的に U ターン ポリシーを指定します。以下では、このパラメーターで選択できる値と、ジャンクションので接続におけるそれぞれの意味について示します。
このパラメーターは、[移動モード] を [カスタム] に設定しなければ無視されます。 | String |
Point_Barriers | 一時的な規制として機能する 1 つ以上のポイント、または対象の道路を通行するために必要とされる追加の時間や距離を表す 1 つ以上のポイントを指定する場合に、このパラメーターを使用します。たとえば、ポイント バリアを使用して、道路沿いの倒木や、踏切で生じる遅延時間を表すことができます。 このツールでは、バリアとして追加できるポイントの数は 250 に制限されています。 ポイント バリアを指定する場合は、次の属性を使用して、各ポイント バリアのプロパティ (ポイント バリアの名前やバリアの種類など) を設定できます。 Name バリアの名前。 BarrierType ポイント バリアの通過を完全に禁止するか、通過時に時間または距離を追加するかを指定します。この属性の値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
Additional_Time バリアを通過するときに追加される移動時間。このフィールドは、解析の移動モードが時間ベースのインピーダンス属性を使用する場合にのみ、追加コスト バリアにのみ適用されます。 このフィールドには 0 以上の値を指定する必要があります。単位は [計測単位] パラメーターで指定した単位と同じです。 Additional_Distance バリアを通過するときに追加される距離。このフィールドは、解析の移動モードが距離ベースのインピーダンス属性を使用する場合にのみ、追加コスト バリアにのみ適用されます。 このフィールドには 0 以上の値を指定する必要があります。単位は [計測単位] パラメーターで指定した単位と同じです。 Additional_Cost バリアを通過するときに追加されるコスト。このフィールドは、解析の移動モードが時間ベースでも距離ベースでもないインピーダンス属性を使用する場合にのみ、追加コスト バリアにのみ適用されます。 FullEdge 解析時に、通行不可ポイント バリアをエッジ要素に適用する方法を指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
CurbApproach バリアによって影響を受ける移動方向を指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
ジャンクションは特定のポイントなので、右側/左側がありません。したがって、ジャンクション上にバリアを配置した場合は、アプローチ制限にかかわらずすべての車両に影響を与えます。 CurbApproach 属性は、米国の右側通行の標準と英国の左側通行の標準の両方に対応するように設計されています。まず、施設が車両の左側にあるとします。これは、車両が移動するのが道路の左側であるか右側であるかに関係なく、常に左側にあります。右側通行か左側通行かに応じて異なるのは、2 つの方向のうちどちらから施設に到着するかです。つまり、結局のところ車両の右側または左側になります。たとえば、施設に到着するときに、車両と施設の間に交通レーンがない方がいい場合は、米国では 1 (車両の右側) を選択し、英国では 2 (車両の左側) を選択します。 Bearing ポイントが移動している方向。単位は度で、北を基準に時計回りに測定されます。このフィールドは BearingTol フィールドと組み合わせて使用されます。 通常、方位データは、GPS 受信機を備えたモバイル デバイスから自動的に送信されます。歩行者や車両などの移動している入力場所を読み込んでいる場合は、方位データを含めてみてください。 このフィールドを使用すると、たとえば、車両が交差点や高架の近くにいる場合に、ロケーションが間違ったエッジに追加されるのを避けることができます。方位は、ツールがポイントを道路のどちら側に配置するかを決定する際にも役立ちます。 BearingTol 方位許容値は、Bearing フィールドを使用して移動ポイントをエッジに配置するときに、許容される方位の範囲を作成します。Bearing フィールドの値が、エッジの方位許容値から生成される許容範囲内にある場合は、ポイントをその場所にネットワーク ロケーションとして配置できます。許容範囲から外れている場合は、次に近いエッジの最も近いポイントが評価されます。 単位は度で、デフォルト値は 30 です。値は 0 より大きく 180 未満でなければなりません。値が 30 の場合、Network Analyst がネットワーク ロケーションをエッジに追加しようとすると、方位値の許容範囲がエッジの両側 (左と右) に 15 度ずつ、どちらもエッジのデジタイズされた方向に生成されます。 NavLatency このフィールドは、Bearing と BearingTol の値が存在する場合にのみ、解析処理で使用されます。ただし、Bearing と BearingTol の値が存在する場合でも、NavLatency 値の入力は任意です。NavLatency は、移動中の車両からサーバーに GPS 情報が送信されてから、車両のナビゲーション デバイスが処理されたルートを受信するまでの予想経過時間を示します。 NavLatency の時間単位は、解析オブジェクトの timeUnits プロパティで指定された単位と同じです。 | Feature Set |
Line_Barriers | 道路と交差しているラインの場所を移動できないようにする 1 つ以上のラインを指定する場合に、このパラメーターを使用します。たとえば、複数の道路区間にわたって通行禁止となるパレードやデモを表すときに通過不可ライン バリアを使用します。また、ライン バリアを使用すれば、道路網の特定の区間を迂回して利用できる経路をすばやく見つけることができます。 このツールでは、[ライン バリア] パラメーターを使用して規制できる道路の数に制限があります。ライン バリアとして指定できるラインの数に制限はありませんが、すべてのラインと交差する道路の総数が 500 を超えることはできません。 ライン バリアを指定する場合は、次の属性を使用するごとに、名前プロパティおよびバリア タイプ プロパティを設定できます。 Name バリアの名前。 | Feature Set |
Polygon_Barriers | 通過を完全に禁止するポリゴン、またはそのポリゴンと交差する道路を移動するときに時間または距離が係数に基づいて乗算されるポリゴンを指定する場合に、このパラメーターを使用します。 このサービスでは、[ポリゴン バリア] パラメーターを使用して規制できる道路の数に制限があります。ポリゴン バリアとして指定できるポリゴンの数に制限はありませんが、すべてのポリゴンと交差する道路の総数が 2,000 を超えることはできません。 ポリゴン バリアを指定する場合は、次の属性を使用して、各ポリゴン バリアのプロパティ (ポリゴン バリアの名前やバリアの種類など) を設定できます。 Name バリアの名前。 BarrierType バリアの通過を完全に禁止するか、バリアを通過する際のコスト (時間または距離など) を係数に基づいて計算するかを指定します。このフィールド値は、次のいずれかの整数として指定されます (括弧で囲まれた名前ではなく、数値コードを使用します)。
ScaledTimeFactor これは、バリアが交差している道路の移動時間に乗算する係数です。このフィールドには 0 より大きい値を指定する必要があります。 このフィールドは、解析の移動モードが時間ベースのインピーダンス属性を使用する場合にのみ、コスト係数指定バリアにのみ適用されます。 ScaledDistanceFactor これは、バリアが交差している道路の距離に乗算する係数です。このフィールドには 0 より大きい値を指定する必要があります。 このフィールドは、解析の移動モードが距離ベースのインピーダンス属性を使用する場合にのみ、コスト係数指定バリアにのみ適用されます。 ScaledCostFactor これは、バリアと交差する道路のコストに乗算する係数です。このフィールドには 0 より大きい値を指定する必要があります。 このフィールドは、解析の移動モードが時間ベースでも距離ベースでもないインピーダンス属性を使用する場合にのみ、コスト係数指定バリアにのみ適用されます。 | Feature Set |
Use_Hierarchy (オプション) | 施設と需要地点間の最短経路を検索する際に、階層を使用するかどうかを指定します。
施設と需要地点の間の直線距離が 50 マイルを超える場合は、階層を使用しないようにこのパラメーターを設定していても、自動的に階層が使用されます。 | Boolean |
Restrictions | 施設と需要地点間の最適なルートを検索する際に従う規制を指定します。 規制は、運転上の優先事項や要件を表します。ほとんどの場合は、規制により道路は通行禁止になります。たとえば、[Avoid Toll Roads] の規制を使用すると、ルートに有料道路が含まれるのは、インシデントまたは施設を訪問するために有料道路の使用が必要な場合のみになります。[Height Restriction] は、車両の高さより低い車高規制の場所を迂回できるようにします。車両に腐食性物質を積載している場合は、[Any Hazmat Prohibited] の規制を使用して、腐食性物質の運搬が法律で禁止されている道路の通行を回避します。 メモ:一部の規制では、用途に関する追加の値を指定する必要があります。この値は、規制の名前、および規制に対応させることを意図している特定のパラメーターに関連付ける必要があります。[属性パラメーター値] パラメーターの [AttributeName] 列に規制の名前が表示されている場合、その規制を識別できます。通行可能な道路を検索するときに、規制が正しく使用されるように、規制に対応する [属性パラメーター値] パラメーター内で [ParameterValue] フィールドを指定する必要があります。 メモ:一部の規制は、特定の国でのみサポートされます。それらの規制の利用可否は、次のリスト内で地域ごとに記述されています。領域内で規制の利用可否が制限されている場合、ネットワーク解析範囲の国リストのセクションにあるテーブルを確認して、規制が特定の国で利用できるかどうかを決定できます。国の [ロジスティック属性] 列に [Yes] という値が指定されている場合、その国では、その地域内で選択可能な規制を利用できます。解析を行う範囲の国で利用できない規制の名前を指定した場合、無効な規制はサービスによって無視されます。また、[規制の使用] 属性パラメーターの値が 0 ~ 1 の範囲内にある規制も、サービスによって無視されます ([属性パラメーター値] パラメーターを参照)。[規制の使用] パラメーターの値が 0 より大きいすべての規制は禁止されます。 メモ:このパラメーターに指定した値は、[移動モード] を [カスタム] に設定しなければ無視されます。 ツールは、次の規制をサポートしています。
レガシー:[Driving a Delivery Vehicle (配送車両の通行)] 規制属性は、使用できなくなりました。この規制は無効なので、サービスはこれを無視します。同様の結果を得るには、[Driving a Truck (トラックの通行)] 規制属性を [Avoid Truck Restricted Roads (トラック規制道路を使用しない)] 規制属性とともに使用します。 | String |
Attribute_Parameter_Values (オプション) | 規制が、制限された道路上の移動を禁止するか、回避するか、優先するかのいずれかを指定する場合など、属性または規制に必要な追加の値を指定する場合に、このパラメーターを使用します。規制が道路を回避または優先するためのものである場合は、このパラメーターを使用して道路が回避または優先される度合いも指定できます。たとえば、有料道路を決して使用しないこと、できるだけ避けること、または優先することを選択できます。 メモ:このパラメーターに指定した値は、[移動モード] を [カスタム] に設定しなければ無視されます。 フィーチャクラスから [属性パラメーター値] パラメーターを指定する場合は、フィーチャクラスのフィールド名が、次のフィールドと一致する必要があります。
[属性パラメーター値] パラメーターは、[規制] パラメーターに依存します。ParameterValue フィールドは、規制の名前が [規制] パラメーターの値として指定されている場合に限り適用できます。 [属性パラメーター値] では、AttributeName で指定した各規制の ParameterName フィールドに [規制の使用] という値があります。この値は、規制に関連付けられた道路での移動を禁止、回避、または優先するかどうか、および道路を回避または優先する場合のレベルを指定します。[ParameterName] フィールドの [規制の使用] の値には、次のいずれかの文字列、またはそれぞれの括弧に示した数値を割り当てることができます。
規制が車両の高さなどの車両の特性に依存している場合はほとんど、[Restriction Usage] にデフォルト値の PROHIBITED を使用できます。ただし、[規制の使用] の値がルートの優先度に依存している場合もあります。たとえば、[Avoid Toll Roads] の規制では、[規制の使用] 属性のデフォルト値は [AVOID_MEDIUM] になります。つまり、この規制を使用すると、可能な場合は有料道路を回避するルートが検索されます。また、[AVOID_MEDIUM] は、最適なルートを検索する際に有料道路を回避することの重要度も表しています (中程度の優先度)。[AVOID_LOW] を選択すると、有料道路を回避する重要度が下がります。AVOID_HIGH を選択すると重要度が上がり、有料道路を回避するためにより長い距離のルートも生成可能になります。[PROHIBITED] を選択すると有料道路の通行は完全に禁止され、ルートでは有料道路のいずれの部分も通行できなくなります。一部のユーザーは、有料道路を回避または禁止して、料金所での支払いを回避することが目的であることに注意してください。一方、料金所で支払うことよりも交通渋滞を避けることのほうに価値があるため、有料道路で運転することを優先するユーザーもいます。後者の場合は、[規制の使用] として [PREFER_LOW]、[PREFER_MEDIUM]、または [PREFER_HIGH] を選択できます。優先度が高いほど、規制に関連付けられている道路を通行するために遠回りするようになります。 | Record Set |
Allocation_Line_Shape (オプション) | ツールによって出力されるライン フィーチャのタイプを指定します。このパラメーターには、次のいずれかの値を指定できます。
[アロケーション ライン形状] パラメーターにどのような値を選択しても、最短ルートは常に、需要地点と施設の間の直線距離を使用するのではなく、移動時間または移動距離を最小限にすることで決定されます。すなわち、このパラメーターは出力ラインの形状のみを変更するものであり、計測方法を変更するものではありません。 | String |
Travel_Mode (オプション) | 解析でモデル化する交通モード。移動モードは ArcGIS Online で管理されます。組織の管理者は、移動モードを構成することで、組織のワークフローを反映することができます。 組織がサポートする移動モードの名前を指定する必要があります。 サポートされている移動モード名のリストを取得するには、このツールへのアクセスに使用した GIS サーバー接続で、[ユーティリティ] ツールボックスの [移動モードの取得 (GetTravelModes)] ツールを実行します。[移動モードの取得 (GetTravelModes)] ツールは、アプリケーションに [サポートされている移動モード] テーブルを追加します。[サポートされている移動モード] テーブルの [Travel Mode Name] フィールドの任意の値を、入力として指定できます。Travel Mode Settings フィールドの値を入力として指定することもできます。これにより、ツールが移動モード名に基づいて設定を検索する必要がなくなるため、ツールの実行時間を短縮します。 デフォルト値 [カスタム] を使用すると、カスタム移動モード パラメーター ([ジャンクションでの U ターン]、[階層の使用]、[規制]、[属性パラメーター値]、および [インピーダンス]) を使用して、独自の移動モードを構成できます。カスタム移動モード パラメーターのデフォルト値は、自動車による移動をモデル化します。歩くのが速い歩行者や、指定された高さ、重量、および特定危険物を積載したトラックなどをモデル化する場合に、[カスタム] を選択して、上記のカスタム移動モード パラメーターを設定することもできます。必要な解析結果を取得するために、異なる設定を試すことができます。解析設定を決定したら、組織の管理者と連携して、その設定を新規または既存の移動モードの一部として保存します。これにより、組織のすべてのユーザーが同じ設定で解析を実行できます。 注意:[カスタム] を選択すると、カスタム移動モード パラメーターに設定した値が解析に組み込まれます。組織で定義されている別の移動モードを指定すると、カスタム移動モード パラメーターで設定した値は無視されます。ツールはカスタムの設定ではなく、指定した移動モードの値を適用します。 | String |
Impedance (オプション) | インピーダンスを設定します。インピーダンスは、道路セグメントや交通ネットワークのその他の部分を移動する労力やコストを表す値です。 移動時間もインピーダンスです。自動車は、空いている道路を 1 マイル移動するのに 1 分かかります。移動時間は、移動モードによって異なります。歩行者は、同じマイル数を歩くのに 20 分以上かかる可能性があります。そのため、モデル化している移動モードに対して適切なインピーダンスを選択することが重要です。 移動距離もインピーダンスになる可能性があります。道路の長さ (キロメートル) もインピーダンスと見なすことができます。この場合の移動距離は、すべてのモデルで同じです。歩行者の 1 キロメートルは、自動車でも 1 キロメートルです (変化する可能性があるのは、別のモデルでは移動が許可される通路で、ポイント間の距離に影響します。これは移動モード設定でモデル化されます)。 注意:このパラメーターに指定した値は、[移動モード] を [カスタム] (デフォルト値) に設定しなければ無視されます。 次のインピーダンス値から選択します。
[TravelTime]、[TruckTravelTime]、[Minutes]、[TruckMinutes]、[WalkTime] などの時間ベースのインピーダンスを選択する場合、[Measurement Units] パラメーターを時間ベースの値に設定する必要があります。[Miles]、[Kilometers] などの距離ベースのインピーダンスを選択する場合、[Measurement Units] が距離ベースである必要があります。 レガシー:[到達圏]、[トラック輸送時間]、[歩行時間]、[移動距離] インピーダンス値のサポートは終了するので、今後のリリースからは削除されます。これらのいずれかの値を使用している場合、時間ベースの値に対しては [時間インピーダンス] パラメーター、距離ベースの値に対しては [距離インピーダンス] パラメーターが使用されます。 | String |
Save_Output_Network_Analysis_Layer (オプション) | 解析設定をネットワーク解析レイヤー ファイルとして保存するかどうかを指定します。このファイルは、ArcMap などの ArcGIS Desktop アプリケーションで開いた場合でも、直接操作することはできません。これは、ツールから返される結果の品質を診断するために、Esri テクニカル サポートに送信されることを想定しています。
| Boolean |
Overrides (オプション) | ネットワーク解析問題の解決法を見つける場合に、解析の動作に影響を与えることができる追加設定。 JSON (JavaScript Object Notation) で、このパラメーターの値を指定する必要があります。たとえば、有効な値は {"overrideSetting1" : "value1", "overrideSetting2" : "value2"} という形式です。オーバーライド設定名は、必ず二重引用符で囲みます。値には、数値、ブール型、または文字列を使用できます。 このパラメーターのデフォルト値は、値なしであり、解析の設定を上書きしません。 オーバーライドは、設定を適用する前後で得られた結果を慎重に分析した後にのみ使用する必要のある高度な設定です。解析ごとにサポートされているオーバーライド設定の一覧およびそれらの許容される値については、Esri テクニカル サポートにお問い合わせください。 | string |
Time_Impedance (オプション) | 時間ベースのインピーダンス。インピーダンスは、道路セグメントや交通ネットワークのその他の部分の移動時間を表す値です。 メモ:[インピーダンス] パラメーターを使用して指定された移動モードのインピーダンスが時間ベースである場合、[時間インピーダンス] パラメーターと [インピーダンス] パラメーターの値が同じである必要があります。同一でなければ、サービスはエラーを返します。 | String |
Distance_Impedance (オプション) | 距離ベースのインピーダンス。インピーダンスは、道路セグメントや交通ネットワークのその他の部分の移動距離を表す値です。 メモ:[インピーダンス] パラメーターを使用して指定された移動モードのインピーダンスが距離ベースである場合、[距離インピーダンス] パラメーターと [インピーダンス] パラメーターの値が同じである必要があります。同一でなければ、サービスはエラーを返します。 | String |
Output_Format (オプション) | 出力フィーチャを作成する形式を指定します。
[JSON ファイル] や [GeoJSON ファイル] など、ファイルベースの出力形式が指定されている場合は、ディスプレイに出力は追加されません。これは、ArcMap や ArcGIS Pro のようなアプリケーションは結果ファイルのコンテンツを描画できないからです。代わりに、結果ファイルはコンピューター上の一時ディレクトリにダウンロードされます。ArcGIS Pro でダウンロードされたファイルの場所を調べるには、プロジェクトのジオプロセシング履歴で、ツールの実行に対応するエントリの [出力結果ファイル] パラメーターの値を表示します。ArcMap でファイルの場所を調べるには、[ジオプロセシング結果] ウィンドウで、ツールの実行に対応するエントリの [出力結果ファイル] パラメーターから、ショートカット メニューの [ロケーションのコピー] オプションにアクセスします。 | String |
派生した出力
名前 | 説明 | データ タイプ |
Solve_Succeeded | サービスが最適な施設を正常に識別したかどうかを判定します。 | ブール型 |
Output_Allocation_Lines | 需要地点と需要地点が割り当てられた施設とを接続するラインへのアクセスを提供します。このようなラインは、ドキュメントには「アロケーション ライン」と記載されています。アロケーション ラインには、各需要地点から関連する施設に割り当てられた需要に関するデータが含まれています。 | フィーチャ セット |
Output_Facilities | 選択された施設、必須施設、競合施設、および選択されなかった候補施設へのアクセスを提供します。 | フィーチャ セット |
Output_Demand_Points | 解析に含まれた需要地点 (施設に割り当てられた需要地点および割り当てられなかった需要地点) へのアクセスを提供します。 | フィーチャ セット |
Output_Network_Analysis_Layer | ツールのパラメーターでプロパティが構成されているネットワーク解析レイヤー。これは、マップ内でさらに詳細な解析やデバッグに使用できます。 | ファイル |
Output_Result_File | 解析結果を含んでいる *.zip ファイル。出力ごとに 1 つ以上のファイルが含まれます。個々のファイルの形式は [出力形式] パラメーターで指定されます。 | ファイル |
コードのサンプル
次の Python スクリプトは、 Solve Location Allocation ツールをスクリプトで使用する方法を示しています。
"""This example shows how to choose the best locations for stores that can service the maximum number of customers."""
import sys
import time
import arcpy
# Change the username and password applicable to your own ArcGIS Online account
username = "<your user name>"
password = "<your password>"
la_service = "https://logistics.arcgis.com/arcgis/services;World/LocationAllocation;{0};{1}".format(username, password)
# Add the geoprocessing service as a toolbox.
# Check https://pro.arcgis.com/en/pro-app/2.6/arcpy/functions/importtoolbox.htm for
# other ways in which you can specify credentials to connect to a geoprocessing service.
arcpy.ImportToolbox(la_service)
# Set the variables to call the tool
facilities = "C:/data/Inputs.gdb/Stores"
demand_points = "C:/data/Inputs.gdb/Customers"
output_lines = "C:/data/Results.gdb/AllocationLines"
output_facilities = "C:/data/Results.gdb/Facilities"
output_demand_points = "C:/data/Results.gdb/DemandPoints"
# Call the tool to find two best store locations that can reach a maxmimum number of customers
# with ten minutes of drive time
result = arcpy.SolveLocationAllocation_LocationAllocation(facilities, demand_points, "Minutes",
Problem_Type="Maximize Attendance",
Number_of_Facilities_to_Find=2,
Default_Measurement_Cutoff=10.0)
arcpy.AddMessage("Running the analysis with result ID: {}".format(result.resultID))
# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
time.sleep(1)
# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
arcpy.AddError("An error occured when running the tool")
arcpy.AddError(result.getMessages(2))
sys.exit(2)
elif result_severity == 1:
arcpy.AddWarning("Warnings were returned when running the tool")
arcpy.AddWarning(result.getMessages(1))
# Store the allocation lines that connect customers to allocated stores, the chosen stores,
# and the allocated customer locations to a geodatabase
result.getOutput(1).save(output_lines)
arcpy.analysis.Select(result.getOutput(2), output_facilities, "DemandCount > 0")
result.getOutput(3).save(output_demand_points)
次に、トラックのカスタム移動モードを使用してロケーション-アロケーション解析を行う方法を例示します。
"""This example shows how to perform a location-allocation analysis using a custom travel mode for trucks."""
import sys
import time
import json
import arcpy
username = "<your user name>"
password = "<your password>"
la_service = "https://logistics.arcgis.com/arcgis/services;World/LocationAllocation;{0};{1}".format(username, password)
# Add the geoprocessing service as a toolbox.
arcpy.ImportToolbox(la_service)
# Set the variables to call the tool
facilities = "C:/data/Inputs.gdb/Stores"
demand_points = "C:/data/Inputs.gdb/Customers"
output_lines = "C:/data/Results.gdb/AllocationLines"
output_facilities = "C:/data/Results.gdb/Facilities"
output_demand_points = "C:/data/Results.gdb/DemandPoints"
# Change to moderately prefer trucking roads for the Trucking Time travel mode
# used for the analysis
portal_url = "https://www.arcgis.com"
arcpy.SignInToPortal(portal_url, username, password)
travel_mode_list = arcpy.na.GetTravelModes(portal_url)
tt = travel_mode_list["Trucking Time"]
tt_json = str(tt)
tt_dict = json.loads(tt_json)
for attr_param in tt_dict["attributeParameterValues"]:
if attr_param['attributeName'] == 'Use Preferred Truck Routes' and attr_param['parameterName'] == 'Restriction Usage':
attr_param['value'] = 'PREFER_MEDIUM'
travel_mode = json.dumps(tt_dict)
# Call the tool
result = arcpy.SolveLocationAllocation_LocationAllocation(facilities, demand_points, "Minutes",
Problem_Type="Maximize Attendance",
Number_of_Facilities_to_Find=2,
Default_Measurement_Cutoff=10.0,
Travel_Mode=travel_mode)
# Check the status of the result object every 1 second until it has a
# value of 4 (succeeded) or greater
while result.status < 4:
time.sleep(1)
# print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
arcpy.AddError("An error occured when running the tool")
arcpy.AddError(result.getMessages(2))
sys.exit(2)
elif result_severity == 1:
arcpy.AddWarning("Warnings were returned when running the tool")
arcpy.AddWarning(result.getMessages(1))
# Store the allocation lines that connect customers to allocated stores, the chosen stores,
# and the allocated customer locations to a geodatabase
result.getOutput(1).save(output_lines)
arcpy.analysis.Select(result.getOutput(2), output_facilities, "DemandCount > 0")
result.getOutput(3).save(output_demand_points)