等時線 API のベスト プラクティス

スムージングと忠実度

polygon_fidelity パラメータと enable_smoothing パラメータを使用して、出力ポリゴンの外観と精度をカスタマイズできます。これらのオプションは独立していますが、連携して最終的な形状を決定します。

  • polygonFidelity(polygon_fidelity): 解決策。到達可能エリアの計算に使用される、基盤となる空間グリッドセルのサイズを制御します。

    • LOW: 最大のグリッドセル(幅数百メートル)を使用します。隙間なく広いエリアをカバーし、頂点数を最小限に抑えるのに最適です。その結果、狭い道路沿いの到達可能エリアを過大評価する可能性がある、一般化された形状になります。
    • MEDIUM: 精度とペイロード サイズのバランスが取れています。
    • HIGH: 最小のグリッドセル(約 100 ~ 150 メートル)を使用します。頂点が増え、道路網にさらに適合するようになりますが、道路網がまばらな場所では内部に穴が生じる可能性があります。
    • デフォルト(POLYGON_FIDELITY_UNSPECIFIED): 指定しない場合、サービスは移動モードと所要時間に基づいて解像度を自動的に選択します。所要時間が短い場合と WALK の場合は細かいセルを使用し、所要時間が長い場合は粗いセルを使用します。異なる所要時間や移動手段の等時線を比較するには、polygonFidelity を明示的に設定して、同じ解像度を使用するようにします。

    セルのサイズは概算値です。非常に大きな等時線は、レスポンス サイズを管理しやすいようにさらに一般化される場合があります。

  • enableSmoothing(enable_smoothing): 美観。忠実度で定義されたグリッドセルの階段状のエッジを丸めるかどうかを制御します。
    • false(未加工): グリッドに沿った境界を返します。エッジは、グリッドセルを反映して、ギザギザまたは階段状に表示されます。厳密なポイントインポリゴン テストなど、分析の精度を重視する場合に最適です。
    • true(平滑化): 各リングの面積をほぼ維持しながら、角を丸めます。地図上に視覚的に表示する場合に最適です。境界がグリッドセルに沿わなくなるため、厳密なポイントインポリゴン テストには使用しないでください。

相互作用の仕組み: 忠実度は、平滑化アルゴリズムが動作するベースラインの詳細を設定します。

  • 高忠実度 + スムージング: 道路の終端に沿った、詳細で自然な形状を生成します。
  • 低忠実度 + スムージング: 広範で一般化された「blob」形状を生成します。

ペイロード サイズとレンダリング

大きな等時線(特に HIGH の忠実度を持つ長時間のリクエスト)には、数万個の座標が含まれることがあり、圧縮されていない JSON レスポンスは数百キロバイト以上になることがあります。

  • 帯域幅: 高忠実度で最大期間のリクエストの場合、JSON レスポンスのサイズが大きくなることに注意してください。
  • レンダリング: 非常に詳細なポリゴンをレンダリングすると、クライアントのパフォーマンスに影響します。頂点数とペイロード サイズを減らすには、polygonFidelity: MEDIUM または LOW を選択するか、Douglas-Peucker などの線簡素化アルゴリズムを使用して、レンダリング前にクライアントでジオメトリを簡素化します。

レイテンシとクライアント タイムアウト

レスポンスのレイテンシは、走査する道路ネットワークのサイズに応じて増加します。短い期間と WALK モードと BICYCLE モードが最も速く、長い DRIVE リクエストと TWO_WHEELER リクエスト(特に TRAFFIC_AWARE を使用する場合)が最も時間がかかります。

  • 推奨されるクライアント タイムアウト: HTTP または gRPC クライアントの期限を 30 秒以上に構成して、クライアント タイムアウトが短いために長いリクエストが早期に中止されないようにします。

エラー処理

429 RESOURCE_EXHAUSTED レート制限レスポンスと 5xx サーバーエラーに対して、指数バックオフとジッターを使用した再試行ロジックを実装します。リクエストを変更せずに、400、403、404 のクライアント エラーを再試行しないでください。

  • INVALID_ARGUMENT (400): travelDuration が 1s と 3600s(DRIVE/TWO_WHEELER)または 7200s(WALK/BICYCLE)の間にあること、location が省略されておらず、(0, 0) ではないこと(または place が有効なプレイス ID であること)、TRAFFIC_AWARE が DRIVE または TWO_WHEELER でのみ使用されていることを確認します。latitude または longitude を省略すると 0.0 として扱われるため、通常はどちらか一方のみを省略しても 400 エラーは発生しません(もう一方の値も 0.0 である場合を除く)。等時線が間違った場所に表示される場合は、両方の値を再確認してください。
  • PERMISSION_DENIED (403): API キーまたは OAuth トークンが含まれていること、Google Cloud プロジェクトで Isochrones API と課金が有効になっていることを確認します。
  • NOT_FOUND (404): place を場所に解決できなかったか、出発地を、移動モードで使用可能な近くの道路(約 200 メートル以内、WALK と BICYCLE の場合はそれ以下)にスナップできませんでした。
  • RESOURCE_EXHAUSTED (429): プロジェクトが 1 分あたりのリクエスト割り当て(デフォルトは 300 QPM)を超えました。指数バックオフを使用して再試行する。