H3風六角形インデックス:座標をセルに概算割り当て
このH3風六角形インデックス概算ツールは、緯度と経度の座標を、頂点を上に向けた世界規模の六角形グリッド上の安定したセルへ割り当てます。解像度は0から15まで選択でき、広い地域から細かなセルへ段階的に切り替えられます。結果には、読みやすいセル識別子、軸座標、推定中心点、概算辺長が含まれます。公式H3との厳密な相互運用性よりも、再現可能なセルによる軽量な集約、分割、キャッシュ、説明用データを重視する用途に適しています。
無料で実行
集約目的に合う解像度をお選びください
解像度はグリッドの縮尺を決めます。解像度0では非常に大きなセルになり、レベルを1つ上げるたびに角度単位の辺長が半分になります。そのため変化は予測しやすく、あるレベルでは別々の近接点が、粗いレベルでは同じセルに入る場合があります。広域の活動を集計する場合は低い解像度から始め、街区単位の集約や密な可視化では値を上げてください。返される概算辺長は実用的な目安ですが、測地学的な保証ではありません。単純な正距円筒図法を使うため、角度上の形状が一定でも、東西方向の地表距離は極へ近づくほど短くなります。辺長の目安だけで決めず、実際の分析地域を代表する座標でお試しください。また、各インデックスには必ず解像度を併記してください。異なる解像度のセルを同じ範囲として比較することはできません。
概算インデックスの生成方法をご確認ください
このアルゴリズムは、経度を横軸、緯度を縦軸に置き、頂点を上にした六角形格子を重ねます。座標を小数の軸座標へ変換し、立方体座標の丸め処理で単一のセルに確定します。この方法は六角形グリッドの3軸間の関係を保ち、有効な入力を必ず1つの決定論的セルへ割り当てます。識別子にはah3接頭辞、選択した解像度、qとrを表す符号付きbase-36コードが含まれます。同じ入力は、ネットワーク、保存状態、乱数、時刻依存データを使わず、常に同じ出力になります。中心点は、丸めた軸位置を緯度と経度へ戻して求めており、ラベル、デバッグ、代表マーカーに利用できます。境界付近では、わずかな座標差で隣接セルが選ばれることがありますが、空間インデックスとして正常な動作です。境界での再現性が重要な場合は、元座標の精度を維持してください。
公式H3を使うべき場面と区別してください
この機能はH3の利用手順に似せていますが、H3インデックスとのバイナリ、文字列、幾何、階層の互換性を示すものではありません。専門的な地理空間ライブラリを読み込まずに、再現可能な空間バケットが必要な場合のための小型解析グリッドです。地点サンプルの集約、キャッシュキーの分割、粗い密度集計、六角形軸座標の学習、安定したテストデータの作成に適しています。後続処理が公式H3アドレスと誤認しないよう、compatible_with_h3は常にfalseです。他のH3アプリとのインデックス交換、正規の親子探索、正式なセル境界、五角形処理、H3の正二十面体地球モデルが必要な場合は、公式H3ライブラリをご利用ください。この概算法は平面上の緯度・経度を使うため、地表面積は緯度によって歪み、反子午線をまたぐ隣接関係も表しません。測地解析の代替ではなく、決定論的な分類方式としてお使いください。
活用例
地図イベントを集約
受信した座標を安定した空間グループへ割り当ててから、イベントを集計または要約します。
位置キャッシュキーを作成
概算位置に基づく結果のキャッシュキーへ、決定論的なセル文字列を組み込みます。
六角形地図を試作
完全な地理空間ライブラリを導入する前に、解像度と軸座標を検討できます。
よくある質問
返されるセルは有効なH3インデックスですか?
いいえ。独自定義の概算識別子であり、H3非互換であることが明示されています。
解像度は何を表しますか?
0から15までの詳細度です。1段階上げるたびに角度上の辺長が半分になり、分類が細かくなります。
地表でセルの大きさが変わるのはなぜですか?
正距円筒平面を使うため、同じ経度幅でも極に近づくほど実際の地表距離が短くなるからです。
結果には再現性がありますか?
はい。同じ緯度、経度、解像度からは常に同じ結果が得られます。
1件の料金はいくらですか?
APIリクエスト1件は$0.002です。ブラウザー版では同じ純粋計算を端末内で実行できます。
中心点を正確な地理的重心として使えますか?
いいえ。概算セルの平面中心であり、代表座標として扱う必要があります。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/h3-cell-approx \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":37.7749,"lon":-122.4194}'const res = await fetch("https://api.kit.forhosting.com/geo/h3-cell-approx", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat": 37.7749,
"lon": -122.4194
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/h3-cell-approx",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat": 37.7749,
"lon": -122.4194
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/h3-cell-approx", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat":37.7749,"lon":-122.4194}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat":37.7749,"lon":-122.4194}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/h3-cell-approx", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"lat": 37.7749,
"lon": -122.4194
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.h3_cell_approx",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |