Web フィーチャ レイヤーのクエリ パターン

ページベースまたはタイルベースのクエリを使用して、Web フィーチャ レイヤーのデータを検索します。

ページベースのクエリ

ArcGIS Pro では、描画および編集中に使用されるクエリのほとんどは、ページネーションと呼ばれるページベースのクエリを使用して実行されます。 この手法は、1 回のクエリですべてのデータを要求するのではなく、ページと呼ばれるデータのサブセットを要求します。 これらのページを使用することで、小さな要求を合理的な時間で送信して返すことができるため、アプリケーションの応答性とユーザー エクスペリエンスが向上します。

ページのサイズは、フィーチャ サービスに関連付けられた maxRecordCount プロパティによって異なります。 これは、フィーチャ サービスを公開する際の [サーバーから返される最大レコード数] パラメーターに基づいています。 その後、この値は、クエリの要求時に resultRecordCount パラメーターとともに使用されます。

詳細については、「サービス パラメーター」をご参照ください。

ページが埋まると、クエリの応答に exceededTransferLimit プロパティが追加されます。 応答で exceededTransferLimit プロパティが true の場合、より多くのレコードが存在し、追加のページが要求されることを示しています。 これらの要求は、exceededTransferLimit が false になるか、クエリの応答にこのプロパティが存在しなくなるまで続行します。

ページは resultOffset 値を使用して、各ページの開始レコードを決定します。 追加のページが要求されると、resultOffset 値が増加します。この値は、スキップしたレコードの数と、ページを開始する次のレコード (resultOffset + 1) を示すのに使用されます。 たとえば、ページ サイズが 2000 に設定されている場合、2 番目のページ要求の resultOffset 値は 2000 となり、ページにはそのページを埋める際に使用できる次の 2000 レコードが含まれます。

詳細については、「クエリ (マップ サービス/レイヤー)」をご参照ください。

注意:

resultOffset パラメーターと resultRecordCount パラメーターを使用しない場合、exceededTransferLimit プロパティもクエリ結果に含まれることがあります。 この場合、レコード数がサーバー管理者によって構成された maxRecordCount 値を超える場合のみ、プロパティが true になります。

タイルベースのクエリ

タイルベースのクエリでは、マップの範囲をタイルに分割し、マップ内のフィーチャの表示に使用します。 これには、サーバーがマップ表示を再計算する代わりに、タイルをサーバーにキャッシュして返す動作も含まれます。 タイルベースのクエリを使用するには、サービス レイヤーの supportsQueryWithCacheHint プロパティが true である必要があります。 これにより、サービスがクエリ結果をキャッシュするかどうかを示す cacheHint パラメーターを使用した要求を行うことができます。

クエリは、さまざまなマップの縮尺に関連付けられた複数の詳細レベルを生成するタイル スキーマを通じて実行されます。 最初に使用される詳細レベルは、データが読み込まれたときのマップの縮尺に基づいています。 タイル内のフィーチャが多すぎない限り、この最初の詳細レベルのタイルが使用されます。 タイル内のフィーチャが多すぎる場合、そのタイルを次のレベルに下げてから要求が行われます。 必要に応じて、このレベルの低下は最初の詳細レベルから合計 3 回発生します。 応答が返されると、タイルはキャッシュされます。 タイルベースのクエリでは、サーバーへのクエリがより多く生成されますが、要求は軽量で、キャッシュされたタイルが使用されるため、引き続きパフォーマンスは最適化されます。

注意:

グリッド タイルのフィーチャが多すぎて 1 回の要求では返せない場合、小さなエリアを拡大するよう求める通知が表示されます。

レイヤーに表示縮尺範囲を設定することで、このような通知の発生を最小限に抑えることができます。

詳細については、「レイヤー (フィーチャ サービス)」をご参照ください。