点半径バウンディングボックス
40.7128, −74.006を中心に半径5000 mなら、その円をすっぽり囲む箱の最小・最大の緯度と経度が分かります。正確な距離を確かめる前の、範囲による素早い絞り込みに使えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 緯度
- 40.7128
- 経度
- -74.006
- 半径
- 5,000
- 半径 m
- 5,000
- 地球半径 m
- 6,371,000
- 緯度差(度)
- 0.0449660803
- 最小緯度
- 40.6678339197
点半径バウンディングボックス計算機は、地理的中心と距離を、円形探索領域を完全に囲む緯度経度の最小の軸揃え矩形に変換します。地図タイル、Overpass クエリ、データベースの空間前フィルタ、モバイルのジオフェンスプレビューは、真の大円距離検査で絞り込む前に、いずれも同じ min/max 包絡を必要とします。
点半径バウンディングボックスとは何か、いつ必要か
地理バウンディングボックスは、南緯・北緯・西経・東経で定義される矩形です。仕様が中心点と半径だけ—店舗ロケータ半径、配達範囲、イベント検索、野生動物首輪バッファ—でも、円距離ではなく緯度経度範囲で索引・照会するシステムにはその矩形が必要です。変換は平均半径 6,371,000 メートルの球面地球を使います。
角半径は物理半径をその定数で割ったもの、緯度半幅はその角度を度にしたもの、経度半幅は中心緯度の余弦で割った同じ角度で、メートルが東西方向でおおよそ等しく保たれます。極付近では余弦が縮み経度スパンが広がります。円が極に達するか経度半幅が180度以上になると、本ツールは経度を−180から+180の全スパンと報告し、ボックスが円を下回って覆わないようにします。
教員・GIS学生・バックエンド技術者は、負の半径がハードエラーであることを重視します。符号付き距離は探索半径ではなく、絶対値を静かに取るとクライアントの不具合が隠れるからです。半径ゼロは許可され、中心に等しい退化したボックスを返し、単体テストや空バッファをクランプする呼び出し側に有用です。
実務のヒント・限界・関連検索
半径はメートルを好み、クライアントがキロメートルと法令マイルを混ぜないようにします。キロは呼び出し前に1000倍してください。中心は公開の緯度経度範囲内に保ち、Webメルカトルや投影座標を送らないでください。
軸揃えの度ボックスは前フィルタです。矩形の角の点は中心から半径より遠くなり得るので、硬い円切りが必要なら haversine または測地距離で絞り込んでください。中心とメートルがあり矩形包絡だけが必要ならこの能力を、ソースがポリゴンや多点集合なら真の多点 bbox を計算してください。
活用例
店舗ロケータと配達半径の前フィルタ
店舗中心とメートルの配達半径を SQL BETWEEN 用の min/max 緯度経度に変換し、候補リストに真の距離検査で絞り込みます。
地図ビューポートとタイル先読み窓
ピンとバッファ距離から、円を下回って覆わずに地図タイル・マーカー・Overpass 地物を要求するバウンディングボックスを計算します。
よくある質問
半径の単位は何ですか?
メートルです。 キロメートルは1000倍します(例: 5 km → 5000)。
バウンディングボックスは円と同じですか?
いいえ。 ボックスは球面地球モデル上で円を完全に囲みますが、矩形の角は半径外になり得ます。ボックスを前フィルタにし、硬い円切りが必要なら距離テストを適用してください。
どの地球モデルを使いますか?
高速包絡の一般的なGIS既定で、完全な WGS84 楕円体測地バッファではありません。
極の近くで箱が大きく広がるのはなぜですか?
経線が極に向かって集まるためです。東西の半幅は南北の半幅を中心緯度の余弦で割った値なので、極に近いほど大きくなります。円が極に届くと、箱は−180から180まですべての経度を覆います。
負の半径が受け付けられないのはなぜですか?
符号付きの距離は検索半径ではないためです。黙って絶対値に直すと送り元の不具合が隠れてしまうので、負の半径は受け付けず、半径0は受け付けます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/bounding-box \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":40.7128,"lon":-74.006,"radius":5000}'const res = await fetch("https://api.kit.forhosting.com/geo/bounding-box", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat": 40.7128,
"lon": -74.006,
"radius": 5000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/bounding-box",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat": 40.7128,
"lon": -74.006,
"radius": 5000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/bounding-box", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat":40.7128,"lon":-74.006,"radius":5000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat":40.7128,"lon":-74.006,"radius":5000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/bounding-box", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"lat": 40.7128,
"lon": -74.006,
"radius": 5000
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.bounding_box",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
min_lat | -90 |
max_lat | 90 |
min_lon | -180 |
max_lon | 180 |
max_radius_m | 20037508.342789244 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
中心の十進度緯度・経度と非負のメートル半径を入力すると、min_lat・max_lat・min_lon・max_lon、GeoJSON 風の bbox 配列 [west, south, east, north]、緯度の角度オフセット、平均地球半径の球面モデルの手順メモを返します。負の半径は invalid_input で拒否され、呼び出し側が反転した無意味な探索窓を送ることはありません。経路は純粋な決定的算術—ネットワークなし、乱数シードなし、壁時計依存なし—なので、無料ブラウザ実行器と前払い API は、固定小数丸めの後に毎回同じ JSON を返します。
点半径バウンディングボックスとは何か、いつ必要か
生の西または東縁が日付変更線を横切ると、経度は−180から+180の閉区間に正規化され、ラップ後に min_lon が max_lon より大きくなり得ることをフラグが示します—地図ライブラリが既に扱う古典的な日付変更線ケースです。
API の呼び出し方と戻り値
閉区間外の絶対緯度経度は三角関数の前に検証失敗します。必須の有限数3つを含む JSON 本体を送ってください: lat(別名 latitude・center_lat)は−90〜90度、lon(別名 longitude・lng・center_lon)は−180〜180度、radius(別名 radius_m・r)はメートルで非負かつ地球半周以下。成功時は丸めた lat・lon・radius_m をエコーし、earth_radius_m を定数 6371000 に、delta_lat_deg を緯度半幅(度)に、囲みボックスの min_lat・max_lat・min_lon・max_lon に、bbox を min_lon,min_lat,max_lon,max_lat の西-南-東-北順四ツ組に、full_longitude と crosses_antimeridian の真偽に、message を短い要約に、steps をログやUIに出せる導出行の順序配列に設定します。欠落フィールド、非有限数、範囲外の緯度経度、負の半径、過大半径は invalid_input を返し課金されません。料金は成功リクエストあたり flat の $0.002、単位 item、限界単価ゼロです。
実務のヒント・限界・関連検索
極付近では経度の1度が0メートルに縮むため、控えめな半径でも full_longitude が true になりがちです。日付変更線付近の太平洋中心クエリでは crosses_antimeridian を確認し、データベースがラップ範囲を表現できない場合は経度区間を2つに分割します。ペア例: 緯度約40.71・経度−74.01のニューヨークに5キロ半径の都市規模店舗検索、min/max が中心に等しいゼロ半径呼び出し、ハード invalid_input 経路を示す意図的な負の半径。このランディングは点半径バウンディングボックス、半径からの lat lon min max、ジオフェンス包絡計算機を探す人向けで、大円距離ツールでも geohash 符号器でもポリゴンバッファでもありません。invalid_input を返す失敗タスクは前払い残高を消費せず、学習者が意図的に負の半径を送る探索スクリプトを安く保ちます。中緯度では半径/R×180/π で緯度デルタを再計算し、公開の12桁小数丸め内で min_lat と max_lat が一致することを確認すれば往復チェックが簡単です。
連携の活用例
ジオフェンスと空間APIの単体テスト
モバイルとバックエンドのジオフェンスコード向けに、正・ゼロ半径・極・負半径の決定的ケースを golden フィクスチャとして生成します。
技術的な質問
極や日付変更線付近ではどうなりますか?
円が極に達するか経度半幅が180°以上なら full_longitude は true で経度は−180〜180です。ボックスが日付変更線を包むと crosses_antimeridian は true で、正規化後 min_lon が max_lon より大きくなり得ます。
点半径バウンディングボックス計算機は無料ですか?
ブラウザツールは無料でローカル実行です。API呼び出しは成功リクエストあたり $0.002 の前払いKIT残高を使用し、失敗タスクは課金されません。