不規則多角形の面積計算
頂点を外周に沿った順に入力すると、図形の面積が分かります。(0, 0)、(6, 0)、(6, 2)、(3, 5)、(0, 2)を頂点とするL字形は21平方単位です。最後に始点を繰り返す必要はなく、どちら回りでも使えます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
この計算ツールは、順序付きの頂点座標リストから、シューレース公式(測量公式とも呼ばれます)を用いて不規則多角形の面積を計算します。頂点は [x, y] ペアまたは {x, y} オブジェクトとして、時計回り・反時計回りいずれの境界順でも指定できます。最初の点が末尾で繰り返されていない場合はリングが自動的に閉じられ、すでに閉じられている場合は重複が静かに除去されます。結果は単一の絶対面積で、座標で使用している単位の二乗として表されます。つまりメートルなら平方メートル、フィートなら平方フィートです。区画スケッチ、間取り図の確認、多角形領域の宿題、既知の頂点から再現可能な面積が必要な CI フィクスチャにご利用いただけます。検証失敗には課金されません。
シューレース公式の仕組みと頂点順序が重要な理由
単純多角形とは、自己交差しない閉じた直線辺のチェーンであり、その面積は内部を三角形分割したり、ラスタライズしたり、乱数点をサンプリングしたりせず、頂点座標の列だけから復元できます。シューレース公式は、各頂点の x 座標に次の頂点の y 座標を掛け、逆方向の交差積を引き、リング一周の符号付き寄与を合計し、絶対値を半分にして面積とします。
この名前は、座標を2列に書いたときに乗算が靴ひものような交差パターンを描くことに由来します。合計は符号付きであるため、時計回りのリングは反時計回りの負の値になりますが、このツールは絶対値を取るため、どちらの向きでも同じ正の面積が得られます。公式が許容できない唯一のことは順序の乱れです。
頂点は時計回りまたは反時計回りのいずれかで境界に沿って順に並んでいる必要があります。同じ点でもシャッフルされたリストは自己交差チェーンを表し、そのシューレース合計は意図した面積ではなく、ツールは意図した順序を推測できません。スキャンや GPS トレースから取得した点は、先に境界に沿って整列またはトレースしてください。
入力形式、リング閉合、エラー動作
多くのジオメトリ形式は、最初の頂点を末尾で繰り返してポリゴンリングを閉じます。このようなリストが指定された場合、エンジンは末尾の重複を検出してカウント前に除去するため、5エントリで渡された閉じた4点の長方形は4頂点として扱われます。逆の慣習も同様に有効で、リングを開いたままにするのが期待されるデフォルトであり、閉じるための追記は不要です。
この正規化の後、頂点数は3以上でなければなりません。エラーは決定的であり課金されません。数値面積は小数点以下10桁に丸められるため、フィクスチャやキャッシュキーがマシン間でバイト単位で一致し、0.1 + 0.2 が2つの CPU で異なって表示されるという古典的な罠を回避できます。
単位、計算例、このツールを使う場面
シューレース公式は単位に依存しません。座標がどの単位で表されていても、返される面積はその単位の二乗です。メートルの座標は平方メートル、フィートは平方フィート、単位なしの図形座標は平方単位になります。
ツールが単位変換を行うことはありません。頂点にメートルとフィートが混在する場合は、先にコンバーター機能で変換してから計測してください。計算例で仕組みを具体的に示します。
頂点 [0, 0]、[6, 0]、[6, 2]、[3, 5]、[0, 2] の L 字形多角形を考えます。各頂点を次の頂点と組み合わせ、最後は最初に戻ると、順方向の積は 0、12、30、6、0 で合計 48、逆方向の積は 0、0、6、0、0 で合計 6 となり、差は 42、その絶対値の半分は 21 なので、面積はちょうど 21 平方単位です。
測量からスケッチした土地の区画、角ごとに測った部屋、ポリゴンに縮約されたレーザースキャンのフットプリント、ゲームマップ、幾何学の宿題など、公式ではなく境界を持っている場合にこのツールが適しています。単一チェーンとしてトレースされた星形などの自己交差図形には使用しないでください。シューレース合計は設計上、重複する部分を差し引いてしまいます。
図形を単純な部分に分割して面積を合計してください。円や円弧については、多角形近似は速く収束しますが、専用の円・扇形計算ツールが正確です。
よくある質問
不規則多角形とは何ですか?
辺と角がすべて等しくない多角形のことです。シューレース公式は、境界が自己交差しない限り、正多角形と不規則な単純多角形の両方に対応します。
最初の頂点を末尾で繰り返す必要がありますか?
いいえ。 リングは自動的に閉じられます。繰り返した場合でも、重複は検出され、頂点数の確認前に除去されます。
頂点の順序は重要ですか?
はい。 頂点は時計回りまたは反時計回りのいずれかで、境界に沿って順に並んでいる必要があります。どちらの向きでも同じ正の面積になりますが、シャッフルされたリストは意図した多角形を表しません。
面積の単位は何ですか?
座標単位の二乗です。 メートルを入力すれば平方メートルが出力されます。ツールは単位変換を行わないため、混在する入力は先に変換してください。
シューレース公式はどのような仕組みですか?
各頂点のxに次の頂点のyを掛け、逆向きの積を引いて外周を一周分足し合わせ、その絶対値を半分にします。掛け算の組み合わせが靴ひものように交差して見えることから、この名前が付きました。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/irregular-polygon-area \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vertices":[[0,0],[6,0],[6,2],[3,5],[0,2]]}'const res = await fetch("https://api.kit.forhosting.com/math/irregular-polygon-area", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vertices": [
[
0,
0
],
[
6,
0
],
[
6,
2
],
[
3,
5
],
[
0,
2
]
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/irregular-polygon-area",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vertices": [
[
0,
0
],
[
6,
0
],
[
6,
2
],
[
3,
5
],
[
0,
2
]
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/irregular-polygon-area", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vertices":[[0,0],[6,0],[6,2],[3,5],[0,2]]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vertices":[[0,0],[6,0],[6,2],[3,5],[0,2]]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/irregular-polygon-area", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"vertices": [
[
0,
0
],
[
6,
0
],
[
6,
2
],
[
3,
5
],
[
0,
2
]
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.irregular_polygon_area",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
正規化後の頂点が3点未満の場合、または座標の欠落・非有限値がある場合は、暗黙のゼロや NaN ではなく invalid_input エラーを返します。API 経由の成功したリクエストには $0.002 の費用がかかります。
シューレース公式の仕組みと頂点順序が重要な理由
推奨入力は配列フィールド vertices ですが、フォームやスプレッドシートからの呼び出し向けに points、polygon、coords のエイリアスも受け付けます。各要素は2要素の数値配列 [x, y] または x・y キーを持つオブジェクトで、GIS 形式のペイロード向けに lon、lng、longitude、lat、latitude も認識されます。
入力形式、リング閉合、エラー動作
リクエストボディは必須フィールドを1つ持つ JSON オブジェクトで、vertices は3点以上の順序付き点配列です。点は [3, 4] のような配列、または {"x": 3, "y": 4} のようなオブジェクトで指定でき、いずれの頂点にも正確に2つの有限数値が必要で、2つの形式を混在させて破綻させることはできません。2点は線分であり多角形ではなく、1点は測定可能なものではないため、いずれも不規則多角形には3点以上の頂点が必要である旨のメッセージを持つ invalid_input エラーになります。同じエラーコードは、vertices フィールドの欠落、配列でないペイロード、座標が1つしかない頂点、以前の文字列から数値への変換で生じた NaN や Infinity などの非有限値もカバーします。失敗したリクエストが予算を消費することはありません。
連携の活用例
技術的な質問
頂点が3点未満の場合はどうなりますか?
不規則多角形には3点以上の頂点が必要である旨の invalid_input エラーが返されます。検証失敗に課金されることはありません。
API 呼び出しの費用はいくらですか?
成功したリクエストには $0.002 の費用がかかります。同じ計算はブラウザウィジェットでは無料で実行され、検証失敗には請求されません。