上限に達する前にキーの使用状況を監視する
割り当てヘッダーを随時確認しておけば、リクエストが実際に拒否されるよりずっと前に、上限が近づいていることが分かります。
累積獲得標高は、ハイカーやサイクリストにとって、距離だけでは決してわからないルートの難しさを教えてくれる1つの数値です。ルート上の十分な数の地点について標高データがあれば、計算も簡単です。
ルートの座標を順番どおりに/v1/elevationへ送ります。pointsパラメータを使うか、一括のPOST配列として送ってください。
GET /v1/elevation?points=45.8326,6.8652|45.8400,6.8700|45.8475,6.8750|45.8300,6.8800{
"status": "ok",
"results": [
{"lat": 45.8326, "lon": 6.8652, "elevation_m": 1035},
{"lat": 45.8400, "lon": 6.8700, "elevation_m": 1210},
{"lat": 45.8475, "lon": 6.8750, "elevation_m": 1390},
{"lat": 45.8300, "lon": 6.8800, "elevation_m": 1180}
]
}結果を順番にたどり、連続する2点ごとに、標高が上がった場合だけその差を累計に加えます。この例では、1035から1210で175が加わり、1210から1390で180が加わり、1390から1180はその区間が下りなので何も加わりません。この短い区間の累積獲得標高は355メートルです。
gain = 0
for i in 1..n:
diff = elevation[i] - elevation[i-1]
if diff > 0: gain += diff同じループで比較を逆にすると、代わりに累積の下り標高が得られます。これは、山を下る片道のライドのように、出発地点より低い場所で終わるルートでは、獲得標高と同じくらい重要です。
loss = 0
for i in 1..n:
diff = elevation[i] - elevation[i-1]
if diff < 0: loss += -diff上の4地点の場合、累積の下り標高は210メートルで、そのすべてが最後の下り区間によるものです。単純な往復ではないルートについて、獲得標高だけを報告して下り標高を省いたルートの概要は、半分しか伝えていません。
獲得標高は、サンプリングする地点の数に左右されます。地点が少なすぎると、実際の上りと下りがならされて、合計が過小になります。ノイズの多いGPSトラックで地点が多すぎると、実際には上りではなかった小さな上下の揺れで数値が膨らむことがあります。ハイキングのトラックに沿って10〜30メートルごと、または均等な距離間隔に再サンプリングした間隔が、妥当な出発点です。
再サンプリングせずに生のGPSトラックに対して直接獲得標高を計算すると、数値が膨らんでしまうことがよくあります。一般向けのGPSトラックは、本当に平坦な地面でも、連続して記録された地点の間で数メートル上下に揺れることが多いからです。端末が記録したすべての生の地点について標高をリクエストするのではなく、トラックを均等な距離間隔に再サンプリングしてから標高をリクエストしてください。
pointsパラメータで送っても一括の配列で送っても、1地点が1リクエストです。300地点をサンプリングしたルートは300リクエストになり、それでもすべてのキーに含まれる1日あたり2,500件の無料リクエストのごく一部です。
この方法で計算した獲得標高は、その背後にある地点のサンプリング次第で精度が決まるので、1つに決める前に、既知のルートでいくつかの間隔を試してみる価値があります。リクエストのすべてのオプションは標高検索のドキュメントのページにあります。