最寄り施設の検出(FindClosestFacilities) (ClosestFacility)
サマリ
運転時間または走行距離に基づいてインシデントから最も近い 1 つ以上の施設を検索し、最適なルート、インシデントと選択したインシデント間のルート案内、および選択した施設のコピーを出力します。このツールを使用すると、たとえば、事故現場から最も近い病院、犯罪現場に最も近いパトカー、または顧客の住所に最も近い店舗を検索できます。
最寄り施設を検出するとき、検索件数と、移動方向を施設に向かう方向にするか、施設から向かう方向にするかを指定できます。また、時刻を指定して、特定の日時のライブまたは予測の交通状況を基に移動時間を考慮することもできます。たとえば、所定の時刻に事故現場から 15 分の到達圏内にある病院を検索できます。交通状況に基づいて運転時間が 15 分を超えてしまう病院は、結果に含まれません。
図
使用法
-
[Measurement Units] パラメータの値が時間の単位である場合は、移動時間に基づいて最寄り施設が検索されます。同様に、使用する単位が距離の単位である場合は、移動距離を使用して最寄り施設が検索されます。
-
ツールを正しく実行するには、少なくとも 1 つの施設と 1 つのインシデントを指定する必要があります。最大 1,000 件の施設と 1,000 件のインシデントを読み込むことができ、インシデントごとに最大 100 件の最寄り施設を検索できます。したがって、解析ごとに最大 100,000 件の最寄り施設を検索できます。
-
最大で 250 のポイント バリアを追加できます。ライン バリアまたはポリゴン バリアは必要なだけ追加できますが、ライン バリアが交差する道路フィーチャは 500 以下にする必要があり、ポリゴン バリアが交差するフィーチャは 2,000 以下にする必要があります。
-
結果を短時間で生成できるように、解析時に道路階層を使用することもできます。ただし、ソリューションの精度は最適な結果よりもやや劣ります。
-
[Use Hierarchy] パラメータがオン(True)であるかどうかにかかわらず、インシデントまたは施設を表すフィーチャのペア間の直線距離が 50 マイル(80.46 キロメートル)を超えている場合は、常に階層が使用されます。
-
入力したポイントと通行可能な最も近い道路の距離が 12.42 マイル(20 キロメートル)を超える場合、そのポイントは解析から除外されます。
構文
パラメータ | 説明 | データ タイプ |
Incidents |
1 つまたは複数のインシデントを指定します(最大 1,000)。これらは、どの場所の近接場所を検索するかを示します。 インシデントを指定する場合は、属性を使用して、各インシデントのプロパティ(インシデントの名前やサービス時間など)を設定できます。インシデントには、次の属性を指定できます。 Name - インシデントの名前。この名前は、ルート案内に使用されます。名前を指定しない場合は、出力ルートおよび出力ルート案内において接頭辞 Location が付いた一意な名前が自動的に生成されます。 ID - インシデントの一意な ID。この ID は、出力ルートに(IncidentID フィールドとして)含まれ、出力ルートからの追加情報(合計移動時間や合計距離など)をインシデントから属性にまたはその逆に結合するために役立ちます。この ID が指定されていない場合は、各インシデントの一意な ID が自動的に生成されます。 AdditionalTime - インシデントで費やされる時間の長さ。これは、ルートの合計時間に追加されます。この属性値の単位は、[Measurement Units] パラメータで指定されます。計測単位が時間ベースである場合に限り、この属性値が解析に含められます。デフォルト値は 0 です。 火災現場から最も近い消防署を検出して応答時間を推定する場合、AdditionalTime 属性に消防士が消火を開始する前に火災現場で消火用具を準備する時間を格納できます。 AdditionalDistance - インシデントで移動する追加の距離。これは、ルートの合計距離に追加されます。この属性値の単位は、[Measurement Units] パラメータで指定されます。計測単位が距離ベースである場合に限り、この属性値が解析に含められます。デフォルト値は 0 です。 通常、インシデントの場所(家など)は厳密には道路に接していません。道路から多少離れて配置されています。インシデントの実際の場所と道路に接した場所の間の距離を合計移動距離に含めることが重要である場合は、この属性値を使用してその距離をモデル化できます。 CurbApproach - 車両がインシデントに到着する方向およびインシデントから出発する方向を指定します。このフィールド値は、次のいずれかの整数として指定されます(括弧で囲まれた名前ではなく、数値コードを使用します)。
[CurbApproach] プロパティは、米国の右側通行の標準と英国の左側通行の標準の両方に対応するように設計されています。まず、インシデントが車両の左側にあるとします。これは、車両が移動するのが道路の左側であるか右側であるかに関係なく、常に左側にあります。右側通行か左側通行かに応じて異なるのは、2 つの方向のうちどちらからインシデントに到着するかです。つまり、結局のところ車両の右側または左側になります。たとえば、インシデントに到着するときに、車両とインシデントの間に交通レーンがないほうがいい場合は、米国では [車両の右側](1)を選択し、英国では [車両の左側](2)を選択します。 | Feature Set |
Facilities |
1 つまたは複数の施設を指定します(最大 1,000)。これらは、最寄りの場所を検出するときに検索対象となる場所です。 施設を指定する場合は、属性を使用して、各施設のプロパティ(施設の名前やサービス時間など)を設定できます。施設には、次の属性を指定できます。 Name - 施設の名前。この名前は、ルート案内に使用されます。名前を指定しない場合は、出力ルートおよび出力ルート案内において接頭辞 Location が付いた一意な名前が自動的に生成されます。 ID - 施設の一意な ID。この ID は、出力ルートおよび出力最寄り施設に FacilityID フィールドとして含まれます。FacilityID フィールドを使用して、出力ルートからの追加情報(合計移動時間や合計距離など)を施設から属性に結合することができます。この ID が指定されていない場合は、各施設の一意な ID が自動的に生成されます。 AdditionalTime - 施設で費やされる時間の長さ。これは、ルートの合計時間に追加されます。この属性値の単位は、[Measurement Units] パラメータで指定されます。計測単位が時間ベースである場合に限り、この属性値が解析に含められます。デフォルト値は 0 です。 火災現場に最も近い消防署を検出する場合、AdditionalTime に消防署の職員が適切な防護装置を身に付けて消防署を出発するまでの時間を格納できます。 AdditionalDistance - 施設で移動する追加の距離。これは、ルートの合計距離に追加されます。この属性値の単位は、[Measurement Units] パラメータで指定されます。計測単位が距離ベースである場合に限り、この属性値が解析に含められます。デフォルト値は 0 です。 通常、施設の場所(消防署など)は厳密には道路に接していません。道路から多少離れて配置されています。施設の実際の場所と道路に接した場所の間の距離を合計移動距離に含めることが重要である場合は、AdditionalDistance でこの距離をモデル化できます。 CurbApproach: 車両が施設に到着する方向および施設から出発する方向を指定します。このフィールド値は、次のいずれかの整数として指定されます(括弧で囲まれた名前ではなく、数値コードを使用します)。
CurbApproach プロパティは、右側通行(米国標準)と左側通行(英国標準)の両方に対応するように設計されています。まず、施設が車両の左側にあるとします。これは、車両が移動するのが道路の左側であるか右側であるかに関係なく、常に左側にあります。右側通行か左側通行かに応じて異なるのは、2 つの方向のうちどちらから施設に到着するかです。つまり、結局のところ車両の右側または左側になります。たとえば、施設に到着するときに、車両と施設の間に交通レーンがないほうがいい場合は、米国では [車両の右側](1)を選択し、英国では [車両の左側](2)を選択します。 | Feature Set |
Measurement_Units |
出力ルートの合計移動時間または合計距離を計測およびレポートするときに使用される単位を指定します。道路に沿って移動時間または移動距離を計測することにより、最寄り施設が検出されます。 このパラメータに選択する単位によって、最寄りのものを検出するときに移動距離が計測されるか、移動時間が計測されるかが決まります。運転時間を測定する場合は、時間の単位を選択します。走行距離を測定する場合は、距離の単位を選択します。結果にレポートされる運転時間または走行距離の合計の単位も、この選択によって決まります。これには次の選択肢があります。
| String |
Analysis_Region (オプション) |
解析を実行する地域を指定します。このパラメータに値を指定しない場合、入力ポイントの位置に基づいて地域名が自動的に計算されます。ツールの実行速度を上げるため、地域名を設定することをお勧めします。地域を指定するには、次のいずれかの値を使用します。
| String |
Number_of_Facilities_to_Find (オプション) |
インシデントごとに検出する最寄り施設の数を指定します。これは、複数の消防署から多くの消防車が必要となる火災などの状況で便利です。たとえば、火災現場に最も近い 3 つの消防署を検出するように指定できます。 各インシデントから最大 100 の施設を検出できます。 | Long |
Cutoff (オプション) |
所定のインシデントに対して施設の検索を中止する移動時間または移動距離の値を指定します。たとえば、事故現場から最も近い病院を検出するときに 15 分間のカットオフ値が設定されている場合は、インシデントから 15 分以内の距離にある、最も近い病院が検索されます。最も近い病院が 17 分の距離にある場合、出力ルートで返されるルートはありません。カットオフ値は、複数の施設を検索する場合に特に便利です。 このパラメータの単位は、[Measurement Units] パラメータで指定されます。 | Double |
Travel_Direction (オプション) |
最寄り施設をインシデントから施設への方向で計測して検出するのか、施設からインシデントへの方向で計測して検出するのかを指定します。
これらのパラメータ値のどちらを使用するかによって、検出される施設が異なることがあります。なぜなら、一部の道路では、移動する方向や一方通行規制に基づいて移動時間が変わることがあるためです。たとえば、インシデントから施設に向かった場合に要する時間が 10 分間であったとしても、施設からインシデントに向かった場合は方向が異なるために、15 分間を要する場合があります。また、[時刻] の値を設定すると、交通量が原因で、[施設からインシデントへ] オプションと [インシデントから施設へ] オプションで異なる結果が返されることがあります。 消防署の場合、消防署(施設)から緊急事態の場所(インシデント)まで移動する時間が重視されるため、通常はパラメータに [施設からインシデントへ] の値が使用されます。小売店(施設)の場合、買物客(インシデント)が小売店に到達するまでの時間が重視されるため、通常は [インシデントから施設へ] が使用されます。 | String |
Use_Hierarchy (オプション) |
施設とインシデント間の最適なルートを検索する際に、階層を使用するかどうかを指定します。
施設とインシデントの間の直線距離が 50 マイルを超える場合は、階層を使用しないようにこのパラメータを設定していても、自動的に階層が使用されます。 | Boolean |
Time_of_Day (オプション) |
ルートの開始または終了の日時を指定します。この値は、[Time of Day Usage] パラメータの値に応じて、ルートの開始時間または終了時間として使用されます。このパラメータの値として現在の日時を指定すると、ライブ交通状況を使用して最寄り施設が検出され、合計移動時間は交通状況に基づくものとなります。 時刻を指定すると、インシデントと施設の間の移動時間の推定がより正確になります。これは、移動時間において、その日時に該当する交通状況が考慮されるためです。 [Time Zone for Time of Day] パラメータは、この日時が UTC を参照するか、施設またはインシデントの場所のタイム ゾーンを参照するかを指定します。 | Date |
Time_of_Day_Usage (オプション) |
[Time of Day] パラメータの値がルートの到着時間と出発時間のどちらを表すかを示します。
| String |
UTurn_at_Junctions (オプション) |
ジャンクションでの U ターン ポリシーU ターンを許可するということは、解析においてジャンクションで方向転換し、同じ道路を引き返すことができるということを意味します。 ジャンクションが道路の交差と行き止まりを表すことを前提に、さまざまな車両が、一部のジャンクションでは方向転換でき、他のジャンクションでは方向転換できない、というように設定できます。これは、ジャンクションが交差と行き止まりのどちらを表すかによって変わります。これに対応するには、ジャンクションに接続するエッジの数(ジャンクションでのノードへの接続数)によって、暗黙的に U ターン ポリシーを指定します。以下では、このパラメータで選択できる値と、ジャンクションので接続におけるそれぞれの意味について示します。
| String |
Point_Barriers (オプション) |
一時的な規制として機能する 1 つ以上のポイント、または対象の道路を通行するために必要とされる追加の時間や距離を表す 1 つ以上のポイントを指定します。たとえば、ポイント バリアを使用して、道路沿いの倒木や、踏切で生じる遅延時間を表すことができます。 このツールでは、バリアとして追加できるポイントの数は 250 に制限されています。 ポイント バリアを指定する場合は、属性を使用して、各ポイント バリアのプロパティ(ポイント バリアの名前やバリアの種類など)を設定できます。ポイント バリアには、次の属性を指定できます。 Name: バリアの名前。 BarrierType: ポイント バリアの通過を完全に禁止するか、通過時に時間または距離を追加するかを指定します。この属性の値は、次のいずれかの整数として指定されます(括弧で囲まれた名前ではなく、数値コードを使用します)。
Additional_Time: バリアを通過するときに追加される移動時間の値を指定します。このフィールドは、追加コスト バリアにのみ適用されます。しかも、計測単位が時間ベースである場合に限られます。このフィールドには 0 以上の値を指定する必要があります。単位は [Measurement Units] パラメータで指定した単位と同じです。 Additional_Distance: バリアを通過するときに追加される距離の値を指定します。このフィールドは、追加コスト バリアにのみ適用されます。しかも、計測単位が距離ベースである場合に限られます。このフィールドには 0 以上の値を指定する必要があります。単位は [Measurement Units] パラメータで指定した単位と同じです。 | Feature Set |
Line_Barriers (オプション) |
道路と交差しているラインの場所を移動できないようにする 1 つ以上のラインを指定します。たとえば、複数の道路区間にわたって通行禁止となるパレードやデモを表すときに通過不可ライン バリアを使用します。また、ライン バリアを使用すれば、道路網の特定の区間を迂回して利用できる経路をすばやく見つけることができます。 このツールでは、[Line Barriers] パラメータを使用して規制できる道路の数に制限があります。ライン バリアとして指定できるラインの数に制限はありませんが、すべてのラインと交差する道路の総数が 500 を超えることはできません。 ライン バリアを指定する場合は、次の属性を使用して、各ライン バリアの名前プロパティを設定できます。 Name: バリアの名前。 | Feature Set |
Polygon_Barriers (オプション) |
通過を完全に禁止するポリゴン、またはそのポリゴンと交差する道路を移動するときに時間または距離が係数に基づいて乗算されるポリゴンを指定します。 このサービスでは、[Polygon Barriers] パラメータを使用して規制できる道路の数に制限があります。ポリゴン バリアとして指定できるポリゴンの数に制限はありませんが、すべてのポリゴンと交差する道路の総数が 2,000 を超えることはできません。 ポリゴン バリアを指定する場合は、属性を使用して、各ポリゴン バリアのプロパティ(ポリゴン バリアの名前やバリアの種類など)を設定できます。ポリゴン バリアには、次の属性を指定できます。 Name: バリアの名前。 BarrierType: バリアの通過を完全に禁止するか、バリアを通過する際の時間または距離を係数に基づいて計算するかを指定します。このフィールド値は、次のいずれかの整数として指定されます(括弧で囲まれた名前ではなく、数値コードを使用します)。
ScaledTimeFactor: これは、バリアが交差している道路の移動時間に乗算する係数です。このフィールドは、コスト係数指定バリアにのみ適用されます。しかも、計測単位が時間ベースである場合に限られます。このフィールドには 0 より大きい値を指定する必要があります。 ScaledDistanceFactor: これは、バリアが交差している道路の距離に乗算する係数です。この属性は、コスト係数指定バリアにのみ適用されます。しかも、計測単位が距離ベースである場合に限られます。この属性には 0 より大きい値を指定する必要があります。 | Feature Set |
Restrictions (オプション) |
インシデントと施設間の最適なルートを検索する際に、従う必要がある規制を指定します。規制は、運転上の優先事項や要件を表します。ほとんどの場合、規制により道路は通行禁止になりますが、回避または優先する道路に指定することもできます。たとえば、[Avoid Toll Roads] の規制を使用すると、ルートに有料道路が含まれるのは、インシデントまたは施設を訪問するために有料道路の使用が不可欠な場合のみになります。[Height Restriction] は、車両の高さより低い車高規制の場所を迂回できるようにします。車両に腐食性物質を積載している場合は、[Any Hazmat Prohibited] の規制を使用して、腐食性物質の運搬が法律で禁止されている道路の通行を回避します。 以下に、利用可能な規制のリストと簡単な説明を示します。
注意: 一部の規制では、目的の用途に関する追加の値を指定する必要があります。この値は、規制の名前、および規制に対応させることを意図している特定のパラメータに関連付ける必要があります。[Attribute Parameter Values] パラメータの [AttributeName] 列の下に規制の名前が表示されている場合、その規制を識別できます。通行可能な道路を検索するときに、規制が正しく使用されるように、規制に対応する [Attribute Parameter Values] パラメータ内で [ParameterValue] フィールドを指定する必要があります。
注意: 一部の規制は、特定の国でのみサポートされます。それらの規制の利用可否は、次のリスト内で地域ごとに記述されています。領域内で規制の利用可否が制限されている場合、ネットワーク解析サービスのデータ提供範囲に関する Web ページの国リストのセクションにあるテーブルを参照して、規制が特定の国で利用できるかどうかを確認できます。国の Logistics Attribute 列に Yes という値が指定されている場合、領域内で選択可能である規制は、その国でサポートされています。解析を行う範囲の国で利用できない規制の名前を指定した場合、無効な規制はサービスによって無視されます。また、[Restriction Usage] パラメータの値が 0 ~ 1 の範囲内にある規制も、サービスによって無視されます([Attribute Parameter Value] パラメータを参照)。[Restriction Usage] パラメータの値が 0 より大きいすべての規制は禁止されます。 ツールは、次の規制をサポートしています。
| String |
Attribute_Parameter_Values (オプション) |
いくつかの規制に必要な追加の値を指定します。たとえば、[Weight Restriction] に対する車両の重量などです。この属性パラメータを使用して、規制を使用する道路上の移動が、規制によって禁止されるか、回避されるか、優先されるかを指定することもできます。規制が道路を回避または優先するためのものである場合は、このパラメータを使用して道路が回避または優先される度合いも指定できます。たとえば、有料道路を決して使用しないこと、できるだけ避けること、または可能な限り優先することを選択できます。 フィーチャクラスから [Attribute Parameter Values] パラメータを指定する場合は、フィーチャクラスのフィールド名が、次に説明するフィールドと一致する必要があります。 AttributeName: 規制の名前のリスト。 ParameterName: 規制に関連付けられたパラメータの名前のリスト。規制は、その使用目的に基づいて、1 つまたは複数の ParameterName フィールド値を持つことができます。 ParameterValue: 規制を評価するときにツールによって使用される ParameterName の値。 [Attribute Parameter Values] は、[Restrictions] パラメータに依存します。[ParameterValue] フィールドは、規制の名前が [Restrictions] パラメータの値として指定されている場合に限り適用できます。 [Attribute Parameter Values] では、[AttributeName] で指定した各規制の [ParameterName] フィールドに [Restriction Usage] という値があります。この値は、規制に関連付けられた道路での移動を禁止、回避、または優先するかどうか、および道路を回避または優先する場合のレベルを指定します。[ParameterName] フィールドの [Restriction Usage] の値には、次のいずれかの文字列、またはそれぞれの括弧に示した数値を割り当てることができます。
ほとんどの場合、車両の特徴(車両の高さなど)に依存する規制であれば、[Restriction Usage] にデフォルト値(PROHIBITED)を使用できます。ただし、[Restriction Usage] の値がルートの優先度に依存している場合もあります。たとえば、[Avoid Toll Roads] の規制では、[Restriction Usage] パラメータのデフォルト値は [AVOID_MEDIUM] になります。つまり、この規制を使用すると、可能な場合は有料道路を回避するルートが検索されます。また、[AVOID_MEDIUM] は、最適なルートを検索する際に有料道路を回避することの重要度も表しています(中程度の優先度)。[AVOID_LOW] を選択すると、有料道路を回避する重要度が下がります。AVOID_HIGH を選択すると重要度が上がり、有料道路を回避するためにより長い距離のルートも生成可能になります。[PROHIBITED] を選択すると有料道路の通行は完全に禁止され、ルートでは有料道路のいずれの部分も通行できなくなります。有料道路を回避または禁止する(つまり、料金の支払いを避ける)ことが目的となる場合もありますが、運転手によっては、通行料を払うよりも渋滞を避けることに価値があると考えて、有料道路の使用を優先する場合もあります。後者の場合は、[Restriction Usage] として [PREFER_LOW]、[PREFER_MEDIUM]、または [PREFER_HIGH] を選択できます。優先度が高いほど、規制に関連付けられている道路を通行するために遠回りするようになります。 | Record Set |
Route_Shape (オプション) |
ツールによって出力されるルート フィーチャのタイプを指定します。このパラメータは、次のいずれかの値を使用して指定できます。
[Route Shape] パラメータが [正確な形状] に設定されている場合は、[Route Line Simplification Tolerance] パラメータの適切な値を使用して、ルートの形状の一般化をさらに制御できます。 [Route Shape] パラメータにどのような値を選択しても、最適ルートは常に、インシデントと施設の間の直線距離を使用するのではなく、移動時間または移動距離を最小限にすることで決定されます。つまり、ルート形状が異なるだけで、ルート検索時に対象となる道路は同じであることを意味します。 | String |
Route_Line_Simplification_Tolerance (オプション) |
ルートおよびルート案内の出力ラインのジオメトリをどの程度単純化するかを指定します。 [Route Shape] パラメータが [正確な形状] に設定されていない場合、このパラメータは無視されます。 単純化では、ルートの基本形状を定義する、交差点での右左折といったルート上の重要ポイントが保持され、それ以外のポイントが削除されます。ここで指定する単純化の距離は、単純化されたラインの元のラインからの逸脱として認められる、最大許容オフセットです。ラインの単純化では、ルート ジオメトリを構成する頂点の数が削減されます。これにより、ツールの実行時間が短縮されます。 | Linear unit |
Populate_Directions (オプション) |
各ルートに対してルート案内を生成するかどうかを指定します。
| Boolean |
Directions_Language (オプション) |
ルート案内を生成する際に使用する言語を指定します。 このパラメータは、[Populate Directions] パラメータがオンであるか、True に設定されている場合にのみ使用されます。 パラメータ値は、次の 2 文字または 5 文字の言語コードのいずれかを使用して指定できます。
サポートされていない言語コードを指定すると、デフォルトの言語である英語を使用するルート案内が返されます。 | String |
Directions_Distance_Units (オプション) |
ルート案内で移動距離を表示する単位を指定します。このパラメータは、[Populate Directions] パラメータがオンであるか、True に設定されている場合にのみ使用されます。
| String |
Directions_Style_Name (オプション) |
ルート案内の書式スタイルの名前を指定します。このパラメータは、[Populate Directions] パラメータがオンであるか、True に設定されている場合にのみ使用されます。パラメータには、次のいずれかの値を指定できます。
| String |
Time_Zone_for_Time_of_Day (オプション) |
[Time of Day] パラメータのタイム ゾーンを指定します。
[Time Zone for Time of Day] の設定に関係なく、施設およびインシデントが複数のタイム ゾーンにある場合は、次の規則が適用されます。
| String |
コードのサンプル
次の Python スクリプトは、FindClosestFacilities(最寄り施設の検出)ツールをスクリプトで使用する方法を示しています。
import arcpy
import time
import sys
username = "<your user name>"
password = "<your password>"
cf_service = "http://logistics.arcgis.com/arcgis/services;World/ClosestFacility;{0};{1}".format(username, password)
#Add the geoprocessing service as a toolbox. Use an alias when importing
arcpy.ImportToolbox(cf_service, "agol")
#Set the variables to call the tool
facilities = r"C:/data/Inputs.gdb/Stores"
incidents = r"C:/data/Inputs.gdb/Customers"
output_routes = "C:/data/Results.gdb/Routes"
output_directions = "C:/data/output/Results.gdb/Directions"
#Call the tool
result = arcpy.agol.FindClosestFacilities(incidents, facilities, "Minutes", "", 2)
#Check the status of the result object every 0.5 seconds
#until it has a value of 4(succeeded) or greater
while result.status < 4:
time.sleep(0.5)
#print any warning or error messages returned from the tool
result_severity = result.maxSeverity
if result_severity == 2:
print "An error occured when running the tool"
print result.getMessages(2)
sys.exit(2)
elif result_severity == 1:
print "Warnings were returned when running the tool"
print result.getMessages(1)
#Get the output routes and save to a local geodatabase
result.getOutput(0).save(output_routes)
result.getOutput(1).save(output_directions)