バウンディングボックス和集合
緯度40.7〜40.8の箱と40.75〜40.9の箱を合わせると、緯度40.7〜40.9、経度−74.1〜−73.85の1つの箱になります。幅、高さ、面積、中心点も同時に分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 最小緯度A
- 40.7
- 最大緯度A
- 40.8
- 最小経度A
- -74.1
- 最大経度A
- -73.9
- 最小緯度B
- 40.75
- 最大緯度B
- 40.9
- 最小緯度
- 40.7
- 最大緯度
- 40.9
- 最小経度
- -74.1
- 最大経度
- -73.85
バウンディングボックス和集合の計算機は、最小・最大の緯度経度で定義された2つの地理矩形を受け取り、両方を完全に含む軸平行な最小矩形を返します。地図パイプラインはレイヤ、クラスタ、ダウンロードタイルごとに別々の包絡を集めがちで、重い幾何ライブラリなしに結合ビューポート・クエリ窓・エクスポート範囲が必要です。
バウンディングボックス和集合とは何か、いつ必要か
軸平行な地理バウンディングボックスとは、南緯・北緯・西経・東経で定義される矩形です。独立した地物クエリ、タイルキャッシュ、オフラインパック、兄弟マイクロサービスなどから既に2つの矩形がある場合、完全なマルチポリゴン溶解なしに両隅をすべて覆う単一の包絡がしばしば必要になります。軸平行ボックスの古典的和集合は成分ごとの極値です。
和集合の南辺は2つの南辺の小さい方、北辺は2つの北辺の大きい方、西辺は2つの西経の小さい方、東辺は2つの東経の大きい方です。これは同じ lat/lon 座標系で測った、両入力をなお含む最小の軸平行矩形です。教師、GIS 学習者、バックエンド技術者は、反転範囲(最小が最大より大きい)を硬エラーにすることを重視します。
隅を静かに入れ替えるとクライアントの不具合が隠れ、意図したレイヤと一致しない包絡になります。入れ子は同じ min/max 規則で自然に処理され、ボックス A が B に完全に含まれるなら和集合は B、同一ならどちらとも等しくなります。互いに離れたボックスでも隙間を覆う有効な包絡になり、レイヤが重ならなくても地図カメラ枠に有用です。
このページは既に2つの bbox があり結合範囲が必要な方向けであり、中心と半径だけがある場合(先に点半径ボックスを使う)や楕円体上の測地バッファが必要な場合向けではありません。
活用例
地図ビューポート向けレイヤ・クエリ包絡の結合
独立した2つの地物レイヤのバウンディングボックスを、返却された全ジオメトリを覆う1つのカメラまたはタイル要求範囲にまとめます。
マイクロサービス間の SQL 空間事前フィルタ
サービス A とサービス B の結果包絡を、重い結合や距離精緻化の前に1つの BETWEEN 窓に和集合します。
オフラインパックとエクスポート範囲の計画
既に lat/lon ボックスとして記述された2つの地域パックから、CI フィクスチャ用に結合ダウンロードまたは印刷範囲を決定的に計算します。
よくある質問
日付変更線(対蹠子午線)は扱いますか?
ツールは純粋な min/max を適用し、日付線横断マルチポリゴンは作りません。そのケースが必要ならクライアント側で非巻き戻し範囲を用意してください。
2つの箱の和集合はどう計算しますか?
辺ごとに端の値を選びます。南端は2つのうち小さいほう、北端は大きいほう、西端は小さい経度、東端は大きい経度です。これで両方を含む最小の長方形になります。
一方の箱がもう一方の中にすっぽり入っている場合は?
和集合は大きいほうの箱そのものになります。その辺がすでに端の値だからです。2つの箱がまったく同じなら、和集合はどちらとも一致します。
離れた2つの箱もまとめられますか?
はい。離れた箱どうしでも、間のすき間まで覆う有効な枠ができます。重ならない2つのレイヤーを1つの地図画面に収めたいときに便利です。
結果には何が含まれますか?
まとめた箱の四辺に加え、度で表した幅と高さ、平方度の面積、中心点が含まれます。例では幅0.25°、高さ0.2°、中心は緯度40.8、経度−73.975です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/bbox-union \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"min_lat_a":40.7,"max_lat_a":40.8,"min_lon_a":-74.1,"max_lon_a":-73.9,"min_lat_b":40.75,"max_lat_b":40.9,"min_lon_b":-74.05,"max_lon_b":-73.85}'const res = await fetch("https://api.kit.forhosting.com/geo/bbox-union", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"min_lat_a": 40.7,
"max_lat_a": 40.8,
"min_lon_a": -74.1,
"max_lon_a": -73.9,
"min_lat_b": 40.75,
"max_lat_b": 40.9,
"min_lon_b": -74.05,
"max_lon_b": -73.85
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/bbox-union",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"min_lat_a": 40.7,
"max_lat_a": 40.8,
"min_lon_a": -74.1,
"max_lon_a": -73.9,
"min_lat_b": 40.75,
"max_lat_b": 40.9,
"min_lon_b": -74.05,
"max_lon_b": -73.85
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/bbox-union", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"min_lat_a":40.7,"max_lat_a":40.8,"min_lon_a":-74.1,"max_lon_a":-73.9,"min_lat_b":40.75,"max_lat_b":40.9,"min_lon_b":-74.05,"max_lon_b":-73.85}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"min_lat_a":40.7,"max_lat_a":40.8,"min_lon_a":-74.1,"max_lon_a":-73.9,"min_lat_b":40.75,"max_lat_b":40.9,"min_lon_b":-74.05,"max_lon_b":-73.85}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/bbox-union", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"min_lat_a": 40.7,
"max_lat_a": 40.8,
"min_lon_a": -74.1,
"max_lon_a": -73.9,
"min_lat_b": 40.75,
"max_lat_b": 40.9,
"min_lon_b": -74.05,
"max_lon_b": -73.85
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.bbox_union",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
小数度の有限な8隅(ボックス A と B の lat/lon の最小・最大)を入力すると、和集合の min_lat・max_lat・min_lon・max_lon、GeoJSON 形式の bbox 配列 [west, south, east, north]、度単位の幅と高さ、度二乗面積、中心点、入力ボックスのエコー、同一・包含の関係フラグ、段階的な導出行を返します。反転したボックスや範囲外座標は invalid_input で失敗し、静かに入れ替わった範囲を出荷しません。経路は純決定的な算術で、ネットワーク・乱数・時計に依存しないため、無料ブラウザ実行と前払い API は固定小数丸め後に毎回同じ JSON を返します。
API の呼び出し方と返却内容
緯度はマイナス90から90の閉区間、経度はマイナス180から180の閉区間に収まっている必要があります。必須の有限数8つを含む JSON 本体を送ります。第1ボックスは min_lat_a・max_lat_a・min_lon_a・max_lon_a、第2は min_lat_b・max_lat_b・min_lon_b・max_lon_b です。各ボックス内で min_lat は max_lat 以下、min_lon は max_lon 以下でなければなりません。正規名は south_a・north_a・west_a・east_a および対応する _b 形、さらに lat_min_a 系の別名を受け付け、既存クライアントが一般的な GIS 名を書き換えなしで写せます。成功時、応答は和集合の min_lat・max_lat・min_lon・max_lon を設定し、bbox を west-south-east-north 順の min_lon・min_lat・max_lon・max_lat 四組にし、width_deg・height_deg・area_deg2 を度の算術で設定し、center_lat・center_lon を和集合の中点にし、角を丸めた box_a・box_b を返し、relation を identical・a_inside_b・b_inside_a・partial_or_disjoint のいずれかにし、message を短い英語要約にし、steps をログや UI 用の導出行配列にします。欠落フィールド、非有限数、範囲外 lat/lon、最小が最大より大きい場合などの検証失敗は invalid_input を返し課金されません。料金は成功リクエストごとに定額 $0.002、単位は item です。
実用上の注意、制限、関連検索
両ボックスを同じ地理 CRS と小数度に保ち、同一呼び出しで Web メルカトルメートルと lat/lon 度を混ぜないでください。極付近では経度1度がメートルで短いため、索引とビューポート枠には和集合を使い、物理面積が必要なら投影や測地測度で精緻化してください。本ツールは日付線をまたぐマルチポリゴンを作らず、製品契約は成分ごとの min/max 明示です。既に2つの軸平行包絡があり包含矩形だけが必要なときに本能力を選び、元がマルチポイント集合ならマルチポイント bbox を計算してください。度ベースの包絡は真の測地面積ではなく、width_deg と height_deg は角度スパン、area_deg2 は素早い比較用の積であり楕円体上の平方メートルではありません。日付変更線付近の太平洋中心作業では、選んだ非巻き戻し意味で各入力が既に min_lon が max_lon 以下であることを確認してください。例の組: 南と東の辺を広げるマンハッタンの重なる2地区、relation が a_inside_b の都市規模ボックス内の小ボックス、硬 invalid_input 経路を示す意図的反転ボックス。このランディングはバウンディングボックス和集合、2ボックス結合、2ボックスの lat lon 包絡、結合地理範囲の検索向けであり、点半径バッファでも geohash 符号器でもポリゴン溶解でもありません。invalid_input の失敗タスクは前払い残高を消費せず、学習者が意図的に反転範囲を送る探索スクリプトを安く保てます。往復確認は簡単で、2つの min_lat の最小を手計算し、公開の12桁丸め内で応答と一致することを確認できます。
技術的な質問
和集合バウンディングボックスはどう計算されますか?
成分ごとの極値です。min_lat は2つの南辺の小さい方、max_lat は大きい北辺、min_lon は小さい西辺、max_lon は大きい東辺です。両入力を含む最小の軸平行ボックスです。
一方のボックスが他方に完全に含まれる場合は?
和集合は外側のボックスと等しくなります。応答は relation を a_inside_b または b_inside_a に設定し、追加検査なしで入れ子を検出できます。
最小が最大より大きいと拒否される理由は?
反転範囲はほぼ常にクライアントの不具合です。API は角を静かに入れ替えず invalid_input で失敗し、不正データがもっともらしい地図範囲にならないようにします。
バウンディングボックス和集合の計算機は無料ですか?
ブラウザツールは無料でローカル実行します。API 呼び出しは成功リクエストごとに前払い KIT 残高の $0.002 を使い、失敗タスクは課金されません。