Network Analyst ルート
簡単に言うと、Network Analyst ルートソルバーは、ある場所から別の場所へ最も速く移動する方法を見つけるために使用されます。この移動経路は開始地点と終了地点だけの場合もありますが、複数の地点で停止しながら、解決策内の各ルートに対してターンバイターンの案内を生成するようソルバーに依頼することも可能です。
注意: ルート機能は Network Analyst ライセンスで利用可能です。
Network Analyst ルートサービスの負荷テスト
Network Analyst はルート解決のための多くの機能と特徴を備えています。これらの解決策は ArcGIS Pro を通じて実行できますが、多くの場合 ArcGIS サービスを通じて利用されます。業界をリードするルート解決技術を提供しているため、ローカルで稼働している(ルート)ソルバーサービスのスケーラビリティの可能性を見るために負荷テストを行うことは理にかなっています。
Network Analyst 拡張機能にはいくつかの分析タイプがありますが、本記事では扱いやすいルートを使用します...必要な入力は少なくとも2つの有効な停止ポイントだけです。この特性により、データ生成方法とそれを使ったルートサービスへの負荷テストのデモンストレーションに適しています。
注意: 本記事の手順は ArcGIS Pro 2.9 と ArcGIS Enterprise 10.9 展開で稼働する Network Analyst サービスを使用しています。
Network Analyst ルートサービスのテスト方法
Network Analyst ArcGIS Pro チュートリアルデータ
本記事のプロセス理解は同じデータを使って手順を追うことで最も効果的です。そのために Network Analyst チームは優れたデータセットを提供しています。
arcgis.com にあるチュートリアル「Network Analyst ArcGIS Pro Tutorial Data」があります。圧縮ファイルで約132MBで、サンディエゴ、パリ、サンフランシスコなど複数都市の Network Analyst データが含まれています。地理座標系は WGS 1984 (WKID: 4326) です。データは公開されています。
注意: 本記事の例ではサンディエゴデータセットに焦点を当てます。
- ArcGIS Pro(トポグラフィックベースマップ付き)で見たサンディエゴ街路データビュー:

- Streets、Walking_Pathways または Network Dataset (NewSanDiego_ND) レイヤーは Network Analyst 機能を利用するために有効化する必要はありません
- 上記例ではサンディエゴ街路の参照として有効化されています
- 本記事では ArcGIS Enterprise におけるネットワークデータセットの作成、設定、公開の詳細については扱いません。関連情報については以下をご覧ください:ネットワークデータセット作成 - 特にこのサンディエゴジオデータベースを使用したチュートリアル
- ルーティングサービス公開
注意: 本記事のルートソルバー例ではジオプロセシングサービスではなくネットワーク解析機能付きマップサービスを使用しています。マップサービスは同期実行を使用します。
テストデータ生成
このテストには JMeter テスト内で使用する有効な停止ポイントが必要です。
Community の他の記事同様、良質なテストデータが結果から最大限の価値を得るために必要です。そして以前と同様に、Load Testing Tools がこの作業を迅速に行います。特にルートデータ作成用ツールもあります。
バージョン 1.3.0 は「Generate Data (Solve Route)」ツールに素晴らしい強化を加えました。
ArcGIS Pro からツールを利用可能にする方法
一度 load-testing-tools プロジェクトがマシンにダウンロードされたら、解凍フォルダーを ArcGIS Pro がアクセス可能またはアクセスできるディレクトリに配置します。既存バージョンがあれば、この更新版は別名フォルダーとして並置するか完全に置き換えることができます。
例:
- C:\Users\[username]\Documents\ArcGIS に load-testing-tools フォルダーを配置
- ArcGIS Pro のカタログからフォルダー接続追加でこのディレクトリ内容を表示

「Generate Data (Solve Route)」ツールは(マップ)サービス、ローカルコピー、またはエンタープライズジオデータベース内のデータからテストデータ作成可能です。この例では WGS 1984 (WKID: 4326) の任意データでサンディエゴ周辺地域が対象となります。
Generate Data (Solve Route) ツール起動
- ツール起動時には以下のようなインターフェースが表示されます:

- 最も簡単な形では停止ポイントとなる csv ファイルパスのみ指定すればよい
- ただし停止ポイントとしてランダムポイント生成したいが湾や湖や海上には作りたくない
- ここでオプションの Constraining Polygon パラメーターが役立つ
- この入力フィールドでポイント生成範囲を空間的に制限するレイヤー参照可能
- 実際にはすべてのデフォルト値を調整します
- ArcGIS Pro におけるサンディエゴ街路データ関心領域(ピンク色ポリゴン)ビュー:

注意: このポリゴンは手動作成でサンディエゴデータセットには含まれていません
注意: テスト観点からポリゴンは街路レイヤー全区間すべてを含む必要はありません
Generate Data (Solve Route) ツール入力項目
- Number of Tests を次のように調整:
- Stops Per Test を次のように調整:
- Constraining Polygon を次に設定:
- Output を結果を書き込むファイルパスへ設定:
- C:\Users\[username]\Documents\ArcGIS\Projects\NetworkAnalystMap1\sandiegostops1.csv
- [Run] をクリックしてツール実行

- CSV ファイルを見ると生成された停止データ が確認できます
ArcGIS Enterprise (ArcGIS Server) のバージョン<\/SPAN>一部のバージョンでは新しい機能が追加されます。<\/SPAN>このテストはSan DiegoデータセットとArcGIS Enterprise 10.9から公開されたサービスに基づいています。<\/SPAN>異なるネットワークデータセットでは、利用可能なまたは初期設定されているリクエストパラメーターオプションが異なる場合があります。一部のパラメーター(例えばreturnDirections)が有効になっている場合、ソルバーはより多くの情報を返すよう指示されます。これによりサービスへの負荷が増え、レスポンス時間が長くなります。< /FONT >< /P >< P >< FONT color = "#FF0000">< STRONG >< FONT face = "inherit">注意: テストプラン左側の目次からHTTP Requestを見ると、JMeter変数と文字列が混在して表示されます。これは設計上の仕様であり、再生時(View Results Treeオブジェクトや生結果ファイル)には値が適切に置き換えられます。< /FONT >< /STRONG >< /FONT >< /P >< H2 id = "toc-hId-1852051304">< SPAN >スレッドグループ構成< /SPAN >< /H2 >< P >JMeter Test Planは20分間の負荷テスト用に設定されています。このテスト例では各ルートリクエストに2つの停止点を使用しており、ソルバーは良好なパフォーマンスを示し、各ステップごとに多数のサンプル(サーバーからの応答)を返すはずです。< /P >< UL >< LI >異なる環境やデータによっては望ましいテスト結果を得るために設定変更が必要になる場合がありますので、必要に応じてスレッド設定を調整してください。< /LI >< /UL >< P >< span class = "lia-inline-image-display-wrapper lia-image-align-center" image-alt = "jmeter_routesolve_threadgroup.png" style = "width: 999px;" >< img src = "https:\/ \/us.v-cdn.net\ /6038851\ /uploads\ /images\ /30250i41B8B7EC7961DE05\ /jmeter_routesolve_threadgroup.png" role = "button" title = "jmeter_routesolve_threadgroup.png" alt = "jmeter_routesolve_threadgroup.png" \/ >< /span >< /P >< H1 id = "toc-hId--84485878">テストプランの検証< /H1 >< P >ベストプラクティスとして、実際にコマンドラインから負荷テストを実行する前にJMeter GUI内で戻ってくる結果を検証することをお勧めします。< /P >< UL >< LI >View Results Treeリスナーを使って検証を支援します。< UL class = "lia-list-style-type-circle" >< LI >本記事用Test PlanにはView Results Tree Listenerが含まれていますが無効化されています。< UL class = "lia-list-style-type-square" >< LI >GUIからテスト再生時に結果を見るため、有効化してください。< / LI >< / UL >< / LI >< / UL >< / LI >< LI >GUIからテストを開始します。< UL class = "lia-list-style-type-circle" >< LI >約20秒間テストを実行します。 < UL class = "lia-list-style-type-square" >< LI >停止ボタンをクリックします。 < / LI >< / UL >< / LI >< / UL >< / LI >< / UL >< H2 id = "toc-hId--1762857622">トランザクション < /H2 >< UL >< LI >「Route」トランザクションのいずれかを選択します。 < UL class = "lia-list-style-type-circle" >< LI >View Results Treeセクションは以下のようになります:< / LI >< / UL >< / LI >< / UL >< P > < span class = "lia-inline-image-display-wrapper lia-image-align-center" image-alt = "jmeter_route_transaction.png" style = "width: 999px;" > < img src = "https:\/ \/us.v-cdn.net\ /6038851\ /uploads\ /images\ /30246iAE729CCE513C09FC\ /jmeter_route_transaction.png" role = "button" title = "jmeter_route_transaction.png" alt = "jmeter_route_transaction.png" \/ > < / span > < / P > < UL > < LI > < SPAN >この例ではすべてのトランザクションが正常に完了しました。 < / SPAN > < UL class = "lia-list-style-type-circle" > < LI >再生停止時、最後のトランザクションが「途中停止」になり失敗することがありますが無視して問題ありません。 < / LI > < / UL > < / LI > < / UL > < H2 id = "toc-hId-724655211">リクエスト< /H2 > < UL > < LI >「Route」トランザクションのいずれかを展開します。 < / LI > < LI >その中のHTTPSリクエストを選択します。 < UL class = "lia-list-style-type-circle" > < LI >結果は以下のようになります:< / LI > < / UL > < / LI > < / UL > < P > < span class = "lia-inline-image-display-wrapper lia-image-align-center" image-alt = "jmeter_route_request1.png" style = "width: 999px;" > < img src = "https:\/ \/us.v-cdn.net\ /6038851\ /uploads\ /images\ /30251i36D08BC51DE86F1D\ /jmeter_route_request1.png" role = "button" title = "jmeter_route_request1.png" alt = "jmeter_route_request1.png" \/ > < / span > < / P > < UL > < LI > < SPAN >この例では選択したリクエストが正常に完了しました(緑色チェックマークで示されています)。 < / SPAN > < UL class = "lia-list-style-type-circle" > < LI >親トランザクションもすでに成功状態でした。 < / LI > < / UL > < / LI > < LI >サンプラー結果タブから、サイズ(バイト単位)フィールドをざっと確認します。 < / LI > < UL class = "lia-list-style-type-circle"> < LI>この例ではリクエストサイズがおよそ15KBであり、通常良好なジオメトリーデータが返されたことを意味します;つまりレスポンスは「空」ではなく成功した証拠です。 リクエストURLも確認します 前述した通り、このURL値は実行時に置き換えられます。 レスポンスデータタブとレスポンスボディサブタブをクリックします ここにはリクエストから返されたデータがテキスト形式で表示されます:
注意: ルートジオメトリー 返されるものは、一般的にウェブブラウザベースのJavaScriptアプリケーションでレンダリングされます。Apache JMeterは(テスト)クライアントですが、サーバーからのこれらのジオメトリ応答をそのように空間的にレンダリングすることはありません。<\/STRONG><\/FONT><\/P>テスト実行<\/H1>負荷テストは、典型的なJMeterテストプランと同じ方法で実行する必要があります。<\/P>Apache JMeterチームが推奨する方法でテストを実行する例については、route_solver1.zipプロジェクトに含まれるrunMe.batスクリプトを参照してください。 <\/P>runMe.batスクリプトには、環境に適した値に設定する必要がある jmeterbin<\/EM> <\/SPAN>変数が含まれています<\/LI>Network Analyst route serviceが専用として公開されている場合は、 <\/FONT>負荷テストを実行する前に最小および最大インスタンスを適切に調整してください。<\/FONT>
詳細については、次を参照してください: サービスインスタンス設定の構成<\/A> <\/STRONG><\/FONT><\/LI><\/UL><\/LI>この記事で使用された公開されたroute serviceは専用で、最大インスタンス数は4に設定されていました