要件
ArcGIS Enterprise が配置されている場合に、サーバー側で非同期バッチ ジオコーディング パターンを使用することで、ロケーター サービスから最大限のパフォーマンスを引き出すことができます。この方法では、ユーザーがポータルに公開し、ユーティリティ サービスとして追加したロケーターを操作します。ロケーターの作成、ポータルでの共有、およびユーティリティ サービスとしての追加の詳細については、「住所をジオコーディングするためのポータルの構成」をご参照ください。
メリット
ArcGIS Enterprise の機能を利用して、公開済みのジオコーディング サービスを最大限に活用することができます。ロケーターがポータルで共有されたら、そのロケーターを使用してバッチ ジオコーディングを実行できます。ポータルでバッチ ジオコーディングを実行することの利点には次のようなものがあります。
- サーバーのリソースを最大限に増やし、バッチ ジオコーディング ジョブをできるだけ速く実行します。
- ArcGIS 管理者は、サービスに過負荷をかけずにバックエンド リソースを管理できるようになります。
- データと独自の公開済みロケーターを使用して、組織のファイアウォールの内側で大規模なバッチ ジオコーディングを実行します。
- 大量のバッチ ジオコーディング ジョブが失敗しないように、チャンク処理およびリトライ ロジックが組み込まれています。
アーキテクチャ
公開済みロケーター サービスを最大限に活用するには、ジオコード サーバーのインスタンス数を増強します。これを行うには、ArcGIS Server Manager の [サービス] ディレクトリに移動して増強するジオコーディング サービスを選択した後、[プール] タブに移動して [コンピューターごとのインスタンスの最小数] および [コンピューターごとのインスタンスの最大数] パラメーターを変更します。ジオコーディングの場合、両方の数を常に等しくする必要があります。常に 4 つのインスタンスを使用できる場合は、両方の値を 4 に変更します。
上記の図で、ArcGIS 管理者はロケーター サービスのインスタンスを 4 つに増強しました。組織の ArcGIS 管理者は、ロケーターの numBatchThreads プロパティを 4 に設定して、バッチ ジオコーディングのパフォーマンスを 4 倍に向上させることができます。管理者は、位置を共有している Portal for ArcGIS Directory の numBatchThreads プロパティを設定できます。2 人のユーザーが同時にバッチ ジオコーディングを実行する場合、ArcGIS 管理者が numBatchThreads プロパティを 2 に設定しないと、ジョブがキューに配置されたり、別のジョブの完了を待機する間にタイムアウトが発生したりする可能性があります。この方法で、各バッチ ジオコーディング ジョブを 2 つのロケーター インスタンスに対して実行し、バックエンドのロケーター サービスは複数のジョブを同時に送信する負荷を処理できます。
構成
次の手順では、ArcGIS 管理者が上記の非同期バッチ ジオコーディング パターンを利用するようにポータルを構成する方法について説明します。
バッチ ジオコーディング時に詳細なフィードバックに関するログを追加
デフォルトでは、GeocodingTools ジオプロセシング サービスのメッセージ レベルは、[警告] に設定されます。より詳細なエラー メッセージ、およびバッチ ジオコーディング ジョブのステータスに関するより適切な最新情報を得るために、GeocodingTools ジオプロセシング サービスのログ レベルを [情報] に設定できます。
- ホスティング サーバーの [ArcGIS Server Manager] を参照します。
- ArcGIS Server Manager のディレクトリ内の [ユーティリティ] フォルダーをクリックします。
- [GeocodingTools] ジオプロセシング サービスをクリックします。
- 左にある [パラメーター] バナーをクリックして、[メッセージ レベル] を [情報] に変更します。次に、右上隅にある [保存して再起動] ボタンをクリックします。
ログ レベルを [情報] に変更すると、パフォーマンスがわずかに低下しますが、ジョブの進行状況に関するフィードバックがより適切になり、エラーが発生した場合に、それに関する情報が詳細になります。ArcGIS Pro の [テーブルのジオコーディング (Geocode Table)]、[テーブルから場所をジオコーディング (Geocode Locations From Table)]、および [ファイルのジオコーディング (Geocode File)] ツールで有効です。
バッチ ジオコーディングのタイムアウトの延長
デフォルトでは、GeocodingTools ジオプロセシング サービスのジョブは 200 分を超えるとタイムアウトになります。バッチ ジオコーディング ジョブの所要時間が 3 時間 20 分を超えることが予測される場合は、クライアントがサービスを使用できる最大時間を延長します。
- ホスティング サーバーの [ArcGIS Server Manager] を参照します。
- ArcGIS Server Manager のディレクトリ内の [ユーティリティ] フォルダーをクリックします。
- [GeocodingTools] ジオプロセシング サービスをクリックします。
- 左側の [プール] バナーをクリックし、クライアントがサービスを使用できる最大時間を変更します。この値を非常に大きな数まで増やすと、大規模なバッチ ジオコーディング ジョブがタイムアウトすることがなくなります。次に、右上隅にある [保存して再起動] ボタンをクリックします。
ロケーターの同時バッチ ジオコーディング リクエストの推奨数 (numBatchThreads) の構成
ポータルのロケーターは、フェデレーション GIS Server サイトで実行される GeocodingTools ジオプロセシング サービスでも使用できます。このジオプロセシング サービスは複数の同時リクエストをジオコード ユーティリティ サービスに送信して、バッチ ジオコーディングの全体的な実行速度を高めることができます。ポータル管理者は、ジオプロセシング サービスが送信する同時リクエストの数を構成できます。ジオプロセシング サービスがロケーターに過剰な同時リクエストを送信していると、そのパフォーマンスが低下し、ジオプロセシング サービスの実行時に障害が増加する可能性があります。このため、管理者は、ロケーター サービスで利用できるインスタンスの数に基づいて、ジオプロセシング サービスが使用するインスタンスの数を設定する必要があります。また、GeocodingTools ジオプロセシング サービスのインスタンスから送信できる同時バッチ ジオコーディング リクエストの数も構成する必要があります。
ベスト プラクティスとして、ロケーター サービスのインスタンスの数が、必ず GeocodingTools ジオプロセシング サービスで利用できるインスタンスの数以上になるようにする必要があります。同時バッチ ジオコーディング リクエストの数は、ロケーターおよびジオプロセシング サービスで利用できるインスタンスの数に比例させて設定する必要があります。たとえば、ロケーター サービスで利用できるインスタンスが 8 個あり、ジオプロセシング サービスで利用できるインスタンスが 2 個ある場合、同時バッチ ジオコーディング リクエスト数は 4 に設定する必要があります。ジオプロセシング サービスは、実行時に 4 つの同時バッチ ジオコーディング リクエストをロケーター サービスに送信します。ロケーター サービスでこれより多くのインスタンスを利用できる場合は、同時バッチ ジオコーディング リクエスト数を適宜調整して、ロケーター サービスのインスタンスを最大限に活用する必要があります。
さらに多くの同時リクエストを使用するように [Esri World Batch Geocoder] を構成することはできません。次の構成は、ユーティリティ サービスとして構成されている他のすべての公開済みロケーター サービスに適用されます。
ロケーター サービスの同時バッチ ジオコーディング リクエスト数を設定するには、次の手順を実行します。
- 位置を共有している Portal for ArcGIS Directory に移動して、管理権限を持つメンバーとしてサイン インします。URL の形式は https://webadaptorhost.domain.com/<webadaptorname>/sharing/rest です。
- [Home] > [Portals] > [Self] の順に移動します。
- ページの下部にある [Update] をクリックします。
- [Geocode Service] テキスト ボックスに、現在ポータルで構成されているロケーター サービスが表示されます。バッチ ジオコーディングが可能なサービス (batch プロパティが true であるサービス) で、同時バッチ ジオコーディング リクエストの推奨数を構成できます。このプロパティで構成するサービスを選択します。[Geocode Service] テキスト ボックスの JSON は、次のような形式です。
[{ "url" : "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer", "northLat" : "Ymax", "southLat" : "Ymin", "eastLon" : "Xmax", "westLon" : "Xmin", "name" : "Esri World Geocoder", "batch": false, "suggest" : true }, { "url" : "https://machine.domain.com/server/rest/services/Locators/USA/GeocodeServer", "name" : "Streetmap Premium USA Geocoder", "placeholder" : "Find address or place", "singleLineFieldName" : "SingleLine", "batch" : true, "placefinding" : true, "suggest" : true, "zoomScale" : 10000 }]
- GeocodingTools ジオプロセシング サービスで使用するすべてのロケーター サービスにプロパティ numBatchThreads を追加します。numBatchThreads の値を設定するには、まず所定のロケーター サービスで有効にする同時バッチ ジオコーディング リクエストの数を決定し、その数と等しくなるようにプロパティを設定します。なお、ロケーター サービス上で numBatchThreads を構成するためには、batch が true でなければならないことに注意してください。
この例では、Streetmap Premium USA Geocoder ユーティリティ サービスで許容される同時バッチ ジオコーディング リクエストの数は 4 に設定されています。
[{ "url" : "https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer", "northLat" : "Ymax", "southLat" : "Ymin", "eastLon" : "Xmax", "westLon" : "Xmin", "name" : "Esri World Geocoder", "batch": false, "suggest" : true }, { "url" : "https://machine.domain.com/server/rest/services/Locators/USA/GeocodeServer", "name" : "Streetmap Premium USA Geocoder", "placeholder" : "Find address or place", "singleLineFieldName" : "SingleLine", "batch" : true, "placefinding" : true, "suggest" : true, "zoomScale" : 10000, "numBatchThreads" : 4 }]
- [Geocode Service] テキスト ボックスで JSON を更新した後、ページの下部にある [Update Organization] をクリックします。
バッチ ジオコーディングに対応したツール
ArcGIS 管理者がロケーターごとに numBatchThreads を設定することで、ユーザーのバッチ ジオコーディング ジョブのパフォーマンスが向上します。このパフォーマンス向上でプラスの影響を受けるツールは、ArcGIS Pro の [テーブルのジオコーディング (Geocode Table)]、[テーブルから場所をジオコーディング (Geocode Locations From Table)]、および [ファイルのジオコーディング (Geocode File)]、Map Viewer の [テーブルから場所をジオコーディング (Geocode Locations From Table)] です。