緯度・経度を3メートルグリッド番号へ変換
3メートルグリッドインデックスは、緯度と経度の組に安定した数値セルアドレスを割り当てます。地球を細い緯度行に分け、各行の経度列を約3メートルの大きさになるよう調整します。結果には、結合インデックス、行、列、その行の列数、中心座標、地理的境界が含まれます。住所よりも小さく再現可能な位置キーが必要な場合に適しており、ネットワーク照会や独自の単語辞書は使用しません。
無料で実行
座標を再現可能な数値アドレスへ変換します
`lat` と `lon` を10進度で入力すると、計算機はその点を世界全体のグリッドにある1つのセルへ割り当てます。主要な `grid_index` は緯度の行と経度の列をピリオドで連結した値であり、保存、比較、記録、URLへの組み込みに使える簡潔なキーです。`row` と `column` は別々にも返されるため、並べ替えやデータベース処理が容易です。`columns_in_row` からは、選択された緯度帯の形状を確認できます。同じ有限入力は必ず同じ結果になります。ネットワーク要求、乱数、時計、変更可能な参照表をアルゴリズムが利用しないためです。通常の境界上にある座標には、一貫した半開区間の規則を適用します。南端と西端はセルに含まれ、北端と東端は次のセルに属します。北極は最後の行へ明示的に割り当て、経度 180 度は -180 度と同じ日付変更線として扱います。この規則により、座標系の端で重複する曖昧なアドレスが生じません。
球面グリッドにおける3メートルの意味を理解します
この計算では、地球を固定された平均半径を持つ球として扱います。まず、南北方向の距離が3メートル以下になるよう、等しい角度の緯度行を作成します。次に各行について、行の中心を通る緯線の円周を求め、中心線上の東西幅も3メートル以下になるだけの経度列を設けます。緯線は極に近づくほど短くなるため、列数も極へ向かって減少します。世界中で同じ経度間隔を使う方法では、高緯度ほど東西方向のセルが極端に細くなりますが、この方式ならその問題を抑えられます。返される境界は、この定義で使う正確な角度上の長方形を表し、中心は代表点として便利な座標です。ただし、物理的な寸法は近似値です。地球は完全な球ではなく、地形によって地表距離が増え、測位機器にも固有の誤差があります。決定論的な分類やアドレス付与に使用し、地籍境界、安全性が重要な航法、専門的な測地測量の代用にはしないでください。
データシステムでインデックスを安全に使います
`grid_index` には、ピリオドで区切られた2つの大きな整数が含まれる可能性があるため、文字列として保存してください。浮動小数点数として解釈すると、行と列の区別が失われるだけでなく、環境によっては整数精度も失われます。データベースの複合キーでは、`row` と `column` を別々の整数列に保存しても構いません。長期保存するデータにはバージョンまたはグリッド名も記録し、将来の別アルゴリズムとこの定義が混同されないようにします。近い座標は同じインデックスになることが多いため、重複除去、おおまかな在席記録、キャッシュ分割、プライバシーに配慮した集計に利用できます。ただし、セル境界を挟む2点には、数センチメートルしか離れていなくても異なるキーが付きます。近接性が重要なら、選択セルに加えて隣接する行と列を調べるか、実際の距離を計算してください。この方式は what3words に関連するおおよその縮尺を参考にしていますが、数値式で独立しています。公式の3単語アドレスを変換せず、独自のセル識別子や単語割り当ても再現しません。
活用例
繰り返し届く位置報告をまとめる
同じ小さなセルに入る観測をまとめ、後で比較できる決定論的なキーを保持します。
簡潔な地図参照を作成する
完全な10進座標が扱いにくい場合に、数値の行と列で座標を表現します。
空間レコードを分割する
行と列を、点データ向けの予測可能なデータベースまたはキャッシュの区画として使用します。
よくある質問
公式の what3words アドレスが返されますか?
いいえ。独立した数値グリッドインデックスを返します。what3words の単語辞書や公式アドレスサービスは使用も再現もしません。
すべてのセルは正確に3メートル四方ですか?
いいえ。各行の中心で高さと幅がおおむね3メートル以下になるよう設計した球面上の緯度・経度セルです。地球楕円体、地形、極付近の条件によって実寸は変化します。
グリッドインデックスには何が入りますか?
0から始まる緯度行、ピリオド、その行で0から始まる経度列が入ります。応答では2つの数値を個別にも返します。
行によって列数が変わるのはなぜですか?
緯線の円周は極へ近づくほど短くなります。列数を変えることで、東西幅を目的の大きさに近づけています。
境界上の座標はどのように処理されますか?
南端と西端はセルに含まれ、北端と東端は次のセルへ進みます。北極は最後の行に入り、経度 180 は -180 と同じ位置として扱われます。
API リクエストの料金はいくらですか?
API リクエスト1回あたり $0.002 です。同じ決定論的ロジックをブラウザー内でローカル実行することもできます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/what3words-grid-index \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":51.520847,"lon":-0.195521}'const res = await fetch("https://api.kit.forhosting.com/geo/what3words-grid-index", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat": 51.520847,
"lon": -0.195521
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/what3words-grid-index",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat": 51.520847,
"lon": -0.195521
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/what3words-grid-index", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat":51.520847,"lon":-0.195521}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat":51.520847,"lon":-0.195521}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/what3words-grid-index", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"lat": 51.520847,
"lon": -0.195521
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.what3words_grid_index",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |