概要
到達圏ネットワーク解析レイヤーを作成し、解析プロパティを設定し、解析を実行します。このツールは、Web 上で到達圏のジオプロセシング サービスを設定する場合に最適です。到達圏ネットワークは、1 つ以上の施設から、指定した距離または移動時間内でアクセスできる道路をすべて含む領域です。
通常、到達圏は、アクセシビリティの表示と計測に使用されます。たとえば、食料品店から 3 分の走行時間のポリゴンは、3 分以内にその店に到達可能な居住者、つまりその店で買い物をする可能性の高い居住者を特定できます。
使用法
このツール ダイアログ ボックスの各種オプション パラメーターは、管理しやすいように次の 6 つのカテゴリに分類されています。
- 高度な解析
- バリア
- カスタム移動モード
- ネットワーク ロケーション
- ポリゴンの生成
- サービスのケーパビリティ
構文
arcpy.na.GenerateServiceAreas(Facilities, Break_Values, Break_Units, Network_Dataset, Service_Areas, {Travel_Direction}, {Time_of_Day}, {UTurn_Policy}, {Point_Barriers}, {Line_Barriers}, {Polygon_Barriers}, {Time_Attribute}, {Time_Attribute_Units}, {Distance_Attribute}, {Distance_Attribute_Units}, {Use_Hierarchy_in_Analysis}, {Restrictions}, {Attribute_Parameter_Values}, {Maximum_Snap_Tolerance}, {Exclude_Restricted_Portions_of_the_Network}, {Feature_Locator_WHERE_Clause}, {Polygons_for_Multiple_Facilities}, {Polygon_Overlap_Type}, {Detailed_Polygons}, {Polygon_Trim_Distance}, {Polygon_Simplification_Tolerance}, {Maximum_Facilities}, {Maximum_Number_of_Breaks}, {Maximum_Features_Affected_by_Point_Barriers}, {Maximum_Features_Affected_by_Line_Barriers}, {Maximum_Features_Affected_by_Polygon_Barriers}, {Maximum_Break_Time_Value}, {Maximum_Break_Distance_Value}, {Force_Hierarchy_beyond_Break_Time_Value}, {Force_Hierarchy_beyond_Break_Distance_Value}, {Save_Output_Network_Analysis_Layer}, {Time_Zone_for_Time_of_Day}, {Travel_Mode}, {Overrides})
パラメーター | 説明 | データ タイプ |
Facilities | 周辺に到達圏が作成される施設。 施設フィーチャ セットには、以下の 3 つの属性があります。 ObjectID: システムで管理される ID フィールド。 Shape: ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。 Name: 施設の名前。名前が空、空白、または NULL の場合、名前は解析時に自動的に生成されます。 | Feature Set |
Break_Values | 施設ごとに作成される到達圏ポリゴンのサイズと数を指定します。単位は、[ブレークの単位] の値によって決まります。 [到達圏の生成 (Generate Service Areas)] ツールを実行すると、次のパラメーターは互いに影響して新しい値が定義されます。[ブレーク値]、[ブレークの単位]、および [時間属性] または [距離属性] のいずれかです。[ブレーク値] と [ブレークの単位] を組み合わせて、1 つまたは複数の施設の周囲で到達圏が延長される、距離または時間を定義します。[時間属性] パラメーターと [距離属性] パラメーターは、それぞれ 1 つのネットワーク コスト属性を定義します。ただし、使用されるのはこれら 2 つのコスト属性のうちの 1 つだけで、解析には、[ブレークの単位] の値に対応する属性が選択されます。つまり、秒や分といった時間ベースの [ブレークの単位] の値を指定した場合、解析には、[時間属性] パラメーターで定義されたコスト属性が使用されます。キロメートルやマイルといった距離ベースの [ブレークの単位] の値を指定した場合、解析には [距離属性] パラメーターで定義されたコスト属性が使用されます。 複数のポリゴンのブレーク値を設定することで、同心状の到達圏を施設ごとに作成できます。たとえば、施設ごとに 2 マイル、3 マイル、および 5 マイルの到達圏を検索するには、「2 3 5」というように、値をスペースで区切って入力します。[ブレークの単位] を [マイル] に設定し、[距離属性] パラメーターについて距離ベースのネットワーク属性を選択していることを確認します。 | String |
Break_Units | [ブレーク値] パラメーターの単位。
[到達圏の生成 (Generate Service Areas)] ツールは、ここで指定した単位が時間または距離のどちらに基づいているかに応じて、[時間属性] または [距離属性] のどちらに指定されたネットワーク コスト属性を使用するかを選択します。 対応する時間または距離のコスト属性の単位と [ブレークの単位] の値が異なる場合は、ツールによって必要な単位変換が実行されます。 | String |
Network_Dataset | 解析が実行されるネットワーク データセット。ほとんどの場合、ネットワーク データセットは道路ネットワークを表しますが、他の種類の交通ネットワークを表すこともあります。ネットワーク データセットには、少なくとも 1 つの時間ベースのコスト属性と 1 つの距離ベースのコスト属性が必要です。 | Network Dataset Layer |
Service_Areas | 出力フィーチャの出力ワークスペースと出力名。このワークスペースはすでに存在している必要があります。デフォルトの出力ワークスペースは、in_memory です。 | Feature Class |
Travel_Direction (オプション) | 到達圏ポリゴンの作成に使用される移動方向について、施設に向かうのか、施設から離れるのかを選択します。
道路の両側でインピーダンスが異なったり、一方通行道路が存在する場合があるため、移動方向によってポリゴンの形状が変化することがあります。方向は、到達圏解析の目的に応じて選択する必要があります。たとえば宅配ピザの到達圏であれば、施設から離れる方向に作成され、病院の到達圏であれば、施設に向かう方向に作成されます。これは、患者にとって、病院に向かう移動時間が重要であるためです。 | String |
Time_of_Day (オプション) | 施設からの出発時間と施設への到着時間。この値の解釈は、移動方向が施設への到着である場合と施設からの出発である場合で異なります。
ネットワーク データセットには、このパラメーターに影響を与える交通量データを含める必要があります。 同じ解析を [時刻] の値を変えて繰り返し実行します。これにより、時間の経過に伴う施設の到着時間の変化を確認できます。たとえば、消防署から 5 分間の到達圏は、早朝には大きくなり、混雑する朝の時間帯は縮小し、朝の遅い時間帯には拡大するなど、一日を通して変化します。 | Date |
UTurn_Policy (オプション) | ジャンクションでの U ターン ポリシー。U ターンを許可するということは、解析においてジャンクションで方向転換し、同じ道路を引き返すことができるということを意味します。 ジャンクションが道路の交差と行き止まりを表すことを前提に、さまざまな車両が、一部のジャンクションでは方向転換でき、他のジャンクションでは方向転換できない、というように設定できます。これは、ジャンクションが交差と行き止まりのどちらを表すかによって変わります。これに対応するには、ジャンクションに接続するエッジの数 (ジャンクションでのノードへの接続数) によって、暗黙的に U ターン ポリシーを指定します。以下では、このパラメーターで選択できる値と、ジャンクションので接続におけるそれぞれの意味について示します。
このパラメーターの値は、[移動モード](Python では Travel_Mode) をカスタム以外の値に設定した場合、オーバーライドされます。 | String |
Point_Barriers (オプション) | ポイント バリアを指定します。ポイント バリアは、通行不可と追加コストの 2 種類に分かれています。これらは、一時的にネットワーク上のポイントの通行を規制したり、ポイントにインピーダンスを追加したりします。ポイント バリアはフィーチャ セットで定義されます。ポイント フィーチャに指定した属性値によって、ポイント バリアが通行不可バリアなのか、追加コスト バリアなのかが決まります。属性テーブルの各フィールドとその説明を以下に示します。 ObjectID: システムで管理される ID フィールド。 Shape: ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。 Name: バリアの名前。 BarrierType: バリアの通過を完全に規制するのか、バリアを通過する際のコストを追加するのかを指定します。次の 2 つのオプションがあります。
[規制] の場合は 0 の値、[追加コスト] の場合は 2 の値を使用します。 AdditionalCost: AdditionalCost は、到達圏がバリアを通過するときに追加されるインピーダンスを指定します。 このフィールド値の単位は、[ブレークの単位] で指定した単位と同じです。 | Feature Set |
Line_Barriers (オプション) | 一時的にラインの横断を規制するライン バリアを指定します。ライン バリアは、フィーチャ セットで定義されます。属性テーブルの各フィールドとその説明を以下に示します。 ObjectID: システムで管理される ID フィールド。 Shape: ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。 Name: バリアの名前。 | Feature Set |
Polygon_Barriers (オプション) | ポリゴン バリアを指定します。ポリゴン バリアは、通行不可とコスト係数指定の 2 種類に分かれています。これらは、ポリゴン バリアに含まれるネットワークの一部に対して、一時的に通行を規制したり、インピーダンスを増減したりします。ポリゴン バリアはフィーチャ セットで定義されます。ポリゴン フィーチャに指定した属性値によって、ポリゴン バリアが通行不可バリアなのか、コスト係数指 バリアなのかが決まります。属性テーブルの各フィールドとその説明を以下に示します。 ObjectID: システムで管理される ID フィールド。 Shape: ネットワーク解析オブジェクトの地理的な位置を示すジオメトリ フィールド。 Name: バリアの名前。 BarrierType: バリアの通過を完全に禁止するか、バリアを通過する際のコストを係数に基づいて計算するかを指定します。次の 2 つのオプションがあります。
[規制] の場合は 0 の値、[コスト係数指定] の場合は 1 の値を使用します。 ScaledCostFactor: ScaledCostFactor は、到達圏がバリアを通過するときにインピーダンスに掛ける値を指定します。 | Feature Set |
Time_Attribute (オプション) | [ブレークの単位] の値が時間単位である場合に使用するネットワーク コスト属性を定義します。 [ブレークの単位] の値が、ここで定義したコスト属性の単位と異なる場合、ツールは必要な時間単位変換を実行します。つまり、休憩の時間単位とネットワーク コスト属性の時間単位が同じである必要はありません。 このパラメーターの値は、[移動モード](Python では Travel_Mode) をカスタム以外の値に設定した場合、オーバーライドされます。 | String |
Time_Attribute_Units (オプション) | [時間属性] パラメーターで指定したネットワーク コスト属性の単位。これは、単に情報パラメーターであるため、ネットワーク データセットを直接編集しなければ、変更することはできません。ブレーク値とコスト属性の間の単位変換が自動的に実行されるため、これを変更する必要もありません。 このパラメーターの値は、[移動モード](Python では Travel_Mode) をカスタム以外の値に設定した場合、オーバーライドされます。 | String |
Distance_Attribute (オプション) | [ブレークの単位] が距離単位の場合に使用されるネットワーク コスト属性を定義します。 [ブレークの単位] の値が、ここで定義したコスト属性の単位と異なる場合、ツールは必要な距離単位変換を実行します。つまり、ブレークの距離単位とネットワーク コスト属性の距離単位が同じである必要はありません。 このパラメーターの値は、[移動モード](Python では Travel_Mode) をカスタム以外の値に設定した場合、オーバーライドされます。 | String |
Distance_Attribute_Units (オプション) | [距離属性] パラメーターで指定したネットワーク コスト属性の単位。これは、単に情報パラメーターであるため、ネットワーク データセットを直接編集しなければ、変更することはできません。ブレーク値とコスト属性の間の単位変換が自動的に実行されるため、これを変更する必要もありません。 このパラメーターの値は、[移動モード](Python では Travel_Mode) をカスタム以外の値に設定した場合、オーバーライドされます。 | String |
Use_Hierarchy_in_Analysis (オプション) |
解析を実行するネットワーク データセットに使用する階層属性が定義されていない場合、パラメーターは無効になります。 [階層の使用を強制する距離] パラメーターを使用して、[解析に階層を使用] が false に設定されていても、解析での階層の使用を強制することができます。 このパラメーターは、[移動モード] が [カスタム] に設定されていないと無視されます。カスタム歩行モードをモデリングする場合、階層が動力付き車両用に設計されているため、階層をオフにすることをお勧めします。
解析を実行するネットワーク データセットに使用する階層属性が定義されていない場合、パラメーターは使用されません。この場合、「"#"」をパラメーター値として使用します。 Force_Hierarchy_Beyond_Distance パラメーターを使用すると、Use_Hierarchy_in_Analysis が False に設定されていても、解析での階層の使用を強制することができます。 このパラメーターは、Travel_Mode を CUSTOM に設定しなければ、無視されます。カスタム歩行モードをモデリングする場合、階層が動力付き車両用に設計されているため、階層をオフにすることをお勧めします。 | Boolean |
Restrictions [restriction,...] (オプション) | 解析時にどのネットワーク規制属性を考慮するかを指定します。 このパラメーターの値は、[移動モード](Python では Travel_Mode) をカスタム以外の値に設定した場合、オーバーライドされます。 | String |
Attribute_Parameter_Values (オプション) | パラメーターを持つネットワーク属性のパラメーター値を指定します。レコード セットには、パラメーターを一意に特定するために一緒に使用される 2 つの列と、パラメーター値を指定する別の列が含まれています。 このパラメーターの値は、[移動モード](Python では Travel_Mode) をカスタム以外の値に設定した場合、オーバーライドされます。 属性パラメーター値 レコード セットには、属性が関連付けられています。属性テーブルの各フィールドとその説明を以下に示します。 ObjectID: システムで管理される ID フィールド。 AttributeName: テーブル行で設定される属性パラメーターを持つネットワーク属性の名前。 ParameterName: テーブル行で設定される値を持つ属性パラメーターの名前。(オブジェクト タイプ パラメーターは、このツールを使用して更新できません。) ParameterValue: 属性パラメーターに設定する値。値が指定されない場合、属性パラメーターは NULL に設定されます。 | Record Set |
Maximum_Snap_Tolerance (オプション) | 最大スナップ許容値とは、Network Analyst がネットワーク上でポイントの配置や再配置を行う場合に検索できる最大距離のことです。検索によって適切なエッジまたはジャンクションを見つけ、そのうちで最も近い場所にポイントをスナップします。最大スナップ許容値内で適切な場所が見つからなかった場合、そのオブジェクトには未配置のマークが付けられます。 | Linear Unit |
Exclude_Restricted_Portions_of_the_Network (オプション) |
| Boolean |
Feature_Locator_WHERE_Clause (オプション) | ソース フィーチャのサブセットの選択に使用される SQL 式。これは、施設を配置可能なネットワーク エレメントを制限します。このパラメーターの構文は、ソース フィーチャクラス名 (後に半角スペースが入ります) と SQL 構文の 2 つの部分で構成されます。2 つ以上のソース フィーチャクラスを含む SQL 式を記述するには、それらをセミコロンで区切ります。 通行が規制されている高速道路に施設を配置しないようにするために、たとえば、次のように SQL 式を記述してそれらのソース フィーチャを除外します。「Streets" "FUNC_CLASS not in('1', '2')」。 読み込み時に、バリアはフィーチャのロケーター WHERE 句を無視します。 | String |
Polygons_for_Multiple_Facilities (オプション) | 解析で複数の施設が存在する場合の、到達圏ポリゴンの作成方法を選択します。
| String |
Polygon_Overlap_Type (オプション) | 同心状の到達圏ポリゴンをディスク状に作成するか、またはリング状に作成するかを指定します。このオプションは、複数のブレーク値が施設に対して指定されている場合にのみ適用できます。
| String |
Detailed_Polygons (オプション) | 詳細ポリゴンまたは単純化ポリゴンを作成するオプションを指定します。
| Boolean |
Polygon_Trim_Distance (オプション) | 到達圏ポリゴンが切詰められる距離の範囲を指定します。データが非常にまばらで、サービス エリア内にフィーチャが存在しない広範領域ができるのを防ぎたい場合に役立ちます。 このパラメーターの値が指定されないか、値が 0 の場合、到達圏ポリゴンは切詰められません。階層を使用する場合、このパラメーター値は無視されます。 | Linear Unit |
Polygon_Simplification_Tolerance (オプション) | ポリゴン ジオメトリをどのくらい単純化するかを指定します。 単純化によって、ポリゴンの基本的な形状を定義する重要ポイントは維持され、その他のポイントは削除されます。ここで指定する単純化の距離は、単純化されたポリゴンにおける逸脱が認められる、元のポリゴンからの最大許容オフセットです。ポリゴンを単純化すると、頂点の数が減ることにより、描画時間が低減する傾向があります。 | Linear Unit |
Maximum_Facilities (オプション) | 到達圏解析に追加できる設備の数を制限します。 このパラメーターは、解析時に発生する処理量の管理に役立ちます。たとえば、作成中の無料版のサービスに対してはこのパラメーターに小さい値を割り当て、有料サブスクリプション版のサービスには大きい値を割り当てるというようにできます。 NULL 値は、制限がないことを示します。 | Long |
Maximum_Number_of_Breaks (オプション) | 到達圏解析に追加できるブレーク値の数を制限します。 このパラメーターは、解析時に発生する処理量の管理に役立ちます。たとえば、作成中の無料版のサービスに対してはこのパラメーターに小さい値を割り当て、有料サブスクリプション版のサービスには大きい値を割り当てるというようにできます。 NULL 値は、制限がないことを示します。 | Long |
Maximum_Features_Affected_by_Point_Barriers (オプション) | ポイント バリアが影響を与えることのできるフィーチャの数を制限します。 このパラメーターは、解析時に発生する処理量の管理に役立ちます。たとえば、作成中の無料版のサービスに対してはこのパラメーターに小さい値を割り当て、有料サブスクリプション版のサービスには大きい値を割り当てるというようにできます。 NULL 値は、制限がないことを示します。 | Long |
Maximum_Features_Affected_by_Line_Barriers (オプション) | ライン バリアが影響を与えることのできるフィーチャの数を制限します。 このパラメーターは、解析時に発生する処理量の管理に役立ちます。たとえば、作成中の無料版のサービスに対してはこのパラメーターに小さい値を割り当て、有料サブスクリプション版のサービスには大きい値を割り当てるというようにできます。 NULL 値は、制限がないことを示します。 | Long |
Maximum_Features_Affected_by_Polygon_Barriers (オプション) | ポリゴン バリアが影響を与えることのできるフィーチャの数を制限します。 このパラメーターは、解析時に発生する処理量の管理に役立ちます。たとえば、作成中の無料版のサービスに対してはこのパラメーターに小さい値を割り当て、有料サブスクリプション版のサービスには大きい値を割り当てるというようにできます。 NULL 値は、制限がないことを示します。 | Long |
Maximum_Break_Time_Value (オプション) | 時間を基準にした到達圏の解析時に使用される [ブレーク値] パラメーターの値の大きさを制限します。 このパラメーターは、解析時に発生する処理量の管理に役立ちます。たとえば、作成中の無料版のサービスに対してはこのパラメーターに小さい値を割り当て、有料サブスクリプション版のサービスには大きい値を割り当てるというようにできます。 NULL 値は、制限がないことを示します。 | Double |
Maximum_Break_Distance_Value (オプション) | 距離を基準にした到達圏の解析時に使用される [ブレーク値] パラメーターの値の大きさを制限します。 このパラメーターは、解析時に発生する処理量の管理に役立ちます。たとえば、作成中の無料版のサービスに対してはこのパラメーターに小さい値を割り当て、有料サブスクリプション版のサービスには大きい値を割り当てるというようにできます。 NULL 値は、制限がないことを示します。 | Double |
Force_Hierarchy_beyond_Break_Time_Value (オプション) | 時間を基準にした到達圏の解析時に、この値を超えた場合に階層が有効でなくても強制的に階層が適用される、ブレーク値を指定します。 ネットワーク階層を使用しながら高いブレーク値の到達圏を解析すると、階層を使用しないで同じ到達圏を解析する場合に比べて、処理の負担が減る傾向にあります。このパラメーターは、解析時に発生する処理量を管理することに役立ちます。 NULL 値を指定すると、階層は強制されません。[解析に階層を使用] パラメーターの値を指定すると、常に階層が使用されます。入力ネットワーク データセットが階層をサポートしていない場合にこのパラメーターの値を指定すると、エラーが発生します。その場合は、NULL 値を使用してください。 | Double |
Force_Hierarchy_beyond_Break_Distance_Value (オプション) | 距離を基準にした到達圏の解析時に、この値を超えた場合に階層が有効でなくても強制的に階層が適用される、ブレーク値を指定します。 ネットワーク階層を使用しながら高いブレーク値の到達圏を解析すると、階層を使用しないで同じ到達圏を解析する場合に比べて、処理の負担が減る傾向にあります。このパラメーターは、解析時に発生する処理量を管理することに役立ちます。 NULL 値を指定すると、階層は強制されません。[解析に階層を使用] パラメーターの値を指定すると、常に階層が使用されます。入力ネットワーク データセットが階層をサポートしていない場合にこのパラメーターの値を指定すると、エラーが発生します。その場合は、NULL 値を使用してください。 | Double |
Save_Output_Network_Analysis_Layer (オプション) |
いずれの場合も、到達圏を持つフィーチャクラスが返されます。ただし、サーバー管理者は、このツールのセットアップと結果を ArcGIS Desktop 環境の Network Analyst コントロールでデバッグできるように、ネットワーク解析レイヤーの出力を選択することもあります。これによって、デバッグ処理が非常に簡単になります。 ArcGIS Desktop では、ネットワーク解析レイヤーのデフォルトの出力場所は、scratch フォルダーになります。scratch フォルダーの場所は、arcpy.env.scratchFolder ジオプロセシング環境の値を評価することで確認できます。出力されたネットワーク解析レイヤーは、「_ags_gpna」に英数字の GUID を付け加えた名前の LYR ファイルとして保存されます。 | Boolean |
Time_Zone_for_Time_of_Day (オプション) | [Time of Day] パラメーターのタイム ゾーンを指定します。
[Time Zone for Time of Day] の設定に関係なく、[Time of Day] に NULL 以外の値が設定されており、マージされたポリゴンまたは重複しないポリゴンを作成するように [Polygons for Multiple Facilities] が設定されている場合は、すべての施設が同じタイム ゾーンに存在する必要があります。 | String |
Travel_Mode (オプション) | 解析する交通モードを選択します。CUSTOM は、常に選択肢に含まれています。その他の移動モード名を表示するには、それらが、Network_Dataset パラメーターで指定したネットワーク データセットに存在している必要があります (arcpy.na.GetTravelModes 関数はネットワーク データセットで構成された移動モード オブジェクトの辞書を提供し、name プロパティは移動モード オブジェクトの名前を返します)。 移動モードは、ネットワーク データセットで定義され、車、トラック、歩行などの移動モードをモデリングする一連のパラメーターをオーバーライドする値を提供します。ここで移動モードを選択することによって、以下のパラメーターの値を指定する必要がなくなります。これらのパラメーターは、ネットワーク データセットで指定した値でオーバーライドされます。
| String |
Overrides (オプション) | 解析の動作に影響を与えるために使用できる追加設定。 このパラメーターの値は、JSON (JavaScript Object Notation) で {"overrideSetting1" : "value1", "overrideSetting2" : "value2"} という形式を使用して指定します。オーバーライド設定名は、必ず二重引用符で囲みます。値には、数値、ブール型、または文字列を使用できます。 | String |
派生した出力
名前 | 説明 | データ タイプ |
Output_Service_Areas | 入力位置から所定の移動時間または移動距離内に到達できるエリア。 | フィーチャ セット |
Solve_Succeeded | 到達圏解析が成功したかどうかを特定します。 | ブール型 |
Output_Network_Analysis_Layer | ツール パラメーターで構成されたプロパティを含み、マップ内の詳細な解析やデバッグに使用できるネットワーク解析レイヤー。 | ファイル |
コードのサンプル
GenerateServiceAreas (到達圏の生成) の例 1 (Python ウィンドウ)
Python ウィンドウから、必要なパラメーターを使用してこのツールを実行します。
import arcpy
facilities = arcpy.FeatureSet()
facilities.load("FireStations")
arcpy.na.GenerateServiceAreas(facilities, "1 2 3", "Minutes", "Streets_ND",
"in_memory\\FireStationServiceAreas")
GenerateServiceAreas (到達圏の生成) の例 2 (スタンドアロン スクリプト)
以下のスタンドアロン Python スクリプトは、GenerateServiceAreas を使用して店舗の到達時間を決定する方法を示しています。一日のうちのさまざまな時刻で、店舗の周囲に 5 分の到達圏を作成する方法を示します。このような解析は、5 分以内に店舗 (ピザ店など) から到達可能な領域が、現在の交通条件に応じてどのように変化するか調べる場合に役立ちます。
# Name: GenerateServiceAreas_Workflow.py
# Description: Generate a 5 minute service area around a store location at
# different times in a day. Such analysis can be useful, for example
# for a pizza store, to see how the area that can be reached within
# 5 minutes from the store changes based on the current traffic
# conditions.
# Requirements: Network Analyst Extension
#Import system modules
import arcpy
from arcpy import env
import datetime
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"
impedanceAttribute = "TravelTime"
breakValues = "5"
breakUnits = "Minutes"
inFacilities = "Analysis/ExistingStore"
outGeodatabase = "C:/data/output/ServiceAreaOutput.gdb"
serviceArea = "in_memory\\ServiceAreas"
dateFieldName = "StartTime"
nameField = "Name"
#use today at 8 AM as the start time and then increment it by one hour
startTime = datetime.datetime(1899,12,30,8,0,0)
#Create a new feature set with same schema as Facilities parameter in
#Generate Service Areas tool. Load the feature from the ExistingStore
#feature class in the feature set
facilities = arcpy.GetParameterValue("GenerateServiceAreas_na",0)
facilities.load(inFacilities)
#Create an empty feature class with same spatial reference as the
#network dataset and a Date field called StartTime and a text field called Name
outServiceAreas = arcpy.management.CreateFeatureclass(outGeodatabase, "ServiceAreas",
"POLYGON","","","",
inNetworkDataset).getOutput(0)
arcpy.management.AddField(outServiceAreas, dateFieldName, "DATE")
arcpy.management.AddField(outServiceAreas, nameField, "TEXT")
#Open an insert cursor on the feature class to add new polygons
cursor = arcpy.da.InsertCursor(outServiceAreas, ("SHAPE@", nameField,
dateFieldName))
#Geneate a 5 minute service area around the store at every one hour interval
#from 8 AM to 8 PM. Copy the output service area to a new feature class
for i in range(1,14):
timeFormat = startTime.time().strftime("%I %p")
print "Generating {0} {1} service area at {2}".format(breakValues,breakUnits,
timeFormat)
arcpy.na.GenerateServiceAreas(facilities,breakValues,breakUnits,
inNetworkDataset, serviceArea, "TRAVEL_FROM",
startTime, Time_Attribute=impedanceAttribute)
#Get the shape from the output service area so that it can be inserted
#in the feature class
with arcpy.da.SearchCursor(serviceArea,("SHAPE@", nameField)) as inputRows:
row = inputRows.next()
cursor.insertRow((row[0],row[1],startTime))
startTime = startTime + datetime.timedelta(seconds=3600)
del cursor
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: 次のものが必要 Network Analyst
- Standard: 次のものが必要 Network Analyst
- Advanced: 次のものが必要 Network Analyst