多角形の重心
角が緯度0〜3、経度0〜4の輪では、面積で重み付けした中心は1.5, 2です。角の単純な平均ではなく、図形全体がつり合う点を示します。区域内のラベルや地図のピンを置くのに便利です。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
単純多角形の面積加重重心は、順序付き頂点リングを境界とする一様薄板のつり合い点です。地図やGISパイプラインではその点は通常WGS84の緯度経度で求められます。区画の角、キャンパス外形、配送ゾーンを送り、角リストの単純平均ではなく面積の幾何中心にある単一の緯度経度対を受け取ります。学生、測量補助、地図ツールはテストに固定できる決定的オラクルを得ます。
面積加重多角形重心とは何か、いつ使うか
平面幾何では多角形領域の重心は密度一定の質量中心です。角が3を超えると頂点座標の平均とは一致しません。細長い腕が頂点平均を面積の本体から引き離す一方、面積加重式はshoelace和で内部を積分します。
区画内にラベルを置く、多辺ゾーンの地図マーカーを選ぶ、閉じた境界から経路デモを始める、四角形や不規則圃場の重心を求める宿題を確認するときに、実務者は多角形重心計算機を探します。GISと教育ツールは直交メートルより緯度経度リストを渡すことが多く、小さな領域では経度を平面x軸、緯度をyとする十進度近似が一般的です。本ランディングはその意図に答えます。
順序付き緯度経度頂点が入り、安定した緯度経度重心が出ます。検索語は多角形重心、面積加重重心、座標からの多角形中心、shoelace重心計算機に集まります。三角形だけの3点平均と異なり、ここはn≧3に一般化し、巻方向と退化した平坦リングを見るために符号付き面積を報告します。
実用上の制限と主な使い道
ゾーン外形の編集、授業演習の確認、GISソフトなしの地図ピン配置で即時確認したいときは無料ブラウザ多角形重心計算機を使います。検証失敗は拒否後に残高を消費しません。リングは街区やキャンパスに十分な頂点数上限があります。
平面度近似に頼るなら領域を控えめにし、大陸規模の多角形は生の緯度経度shoelaceではなく等面積投影や測地ライブラリを使ってください。頂点は境界まわりに一貫して並べます。自己交差の蝶結びは製品約束外です。
予測可能な中心には単純非自己交差リングを与えてください。厳密に3点の形で頂点の算術平均だけが欲しいときは三角形重心ツールと、計算中心からの航法が次の手順なら方位・距離ヘルパーと組み合わせます。
活用例
地図ラベルとゾーンマーカー
順序付き緯度経度の角から、多辺配送ゾーン・区画・キャンパス外形の面積加重中心に単一ピンを置きます。
宿題とGIS授業の確認
学生と採点者はローカル幾何ライブラリなしで四角形・不規則多角形のshoelace重心を検証します。
よくある質問
多角形重心計算機はどの式ですか?
x=経度、y=緯度の十進度による平面面積加重shoelace重心です。
全頂点の平均と同じですか?
いいえ。 三角形では一致し得ますが、一般n角形では面積加重shoelace重心は単純頂点平均と異なります。本製品は常に面積加重式を使います。
広い地域や国全体にも使えますか?
区画やキャンパス、街区のような比較的狭い範囲に向いています。経度と緯度を度のまま平面のxとyとして扱うため、大陸規模の図形には正積図法や測地計算のツールを使ってください。
多角形が受け付けられないのはなぜですか?
多くの場合、角が3つ未満か、点が一直線に並ぶなどして面積が0かほぼ0であるためです。緯度や経度が有効な範囲を外れた座標も受け付けません。
最初の頂点を最後に繰り返す必要はありますか?
必要ありません。輪が閉じていて最初の点が最後に繰り返されている場合は、計算の前にその重複を取り除きます。地図ソフトから書き出した輪郭もそのまま使えます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/polygon-centroid \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vertices":[{"lat":0,"lon":0},{"lat":0,"lon":4},{"lat":3,"lon":4},{"lat":3,"lon":0}]}'const res = await fetch("https://api.kit.forhosting.com/geo/polygon-centroid", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vertices": [
{
"lat": 0,
"lon": 0
},
{
"lat": 0,
"lon": 4
},
{
"lat": 3,
"lon": 4
},
{
"lat": 3,
"lon": 0
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/polygon-centroid",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vertices": [
{
"lat": 0,
"lon": 0
},
{
"lat": 0,
"lon": 4
},
{
"lat": 3,
"lon": 4
},
{
"lat": 3,
"lon": 0
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/polygon-centroid", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vertices":[{"lat":0,"lon":0},{"lat":0,"lon":4},{"lat":3,"lon":4},{"lat":3,"lon":0}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vertices":[{"lat":0,"lon":0},{"lat":0,"lon":4},{"lat":3,"lon":4},{"lat":3,"lon":0}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/polygon-centroid", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"vertices": [
{
"lat": 0,
"lon": 0
},
{
"lat": 0,
"lon": 4
},
{
"lat": 3,
"lon": 4
},
{
"lat": 3,
"lon": 0
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.polygon_centroid",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
本機能は十進度座標上の古典的平面shoelace重心を実装し、頂点が3未満のリングを拒否し、重心・符号付き平面面積・正規化頂点エコーを含む構造化JSONを返します。
面積加重多角形重心とは何か、いつ使うか
結果は入力リングの純関数で、同一頂点は常に同一JSONを生み、モデルもネットワークジオコーダも乱数種も経路にありません。
入力契約、検証、使用するshoelace式
緯度はマイナス90〜90、経度はマイナス180〜180、各座標は有限数または数値文字列でなければなりません。GeoJSON風に末尾で最初の点を繰り返して閉じている場合、重複閉じ頂点は数え前に落とします。符号付き面積が0またはほぼ0なら、共線または潰れたリングに明確な面積加重中心がないため失敗します。三角分割ライブラリも外部地図タイルもなく、無料ブラウザツールと共有するWorker上の算術のみです。必須フィールドverticesが、各々WGS84十進度のlatとlonを持つオブジェクト配列であるJSONオブジェクトを送ってください。配列にはpoints、ring、coordinatesの別名を受け付け、各頂点はlatにlatitudeまたはy、lonにlongitude、lngまたはxも受け付けます。正規化後エンジンは少なくとも3頂点を要求し、未満は明確なメッセージのinvalid_inputで課金なしです。平面符号付き面積Aはx=lon、y=latとして交差積x_i y_{i+1}−x_{i+1} y_iの和の半分です。重心経度は1/(6A)に各交差項を掛けた(x_i+x_{i+1})の和、重心緯度はy座標の同様の和です。成功応答はvertex_countと正規化頂点をエコーし、重心のlatとlon、診断用の度二乗単位signed_area、CIでアルゴリズムを断言できるようmethod=area_weighted_shoelaceを返します。
API利用、料金、制限、実務フロー
物流ダッシュボード、不動産基盤、教材生成、テストスイートがKIT残高下で同じ面積加重契約を必要とするときは前払いAPIを使い、成功項目ごとに$0.002です。時計回り・反時計回りどちらも可で、signed_areaの符号が巻方向を示します。SDK作者はshoelaceを各言語で再実装せずlatとlonを地図マーカーAPIやCSV書き出しへ直接写せます。
連携の活用例
地理パイプライン用の決定的フィクスチャ
CIとSDKデモは、各サービスで面積加重式を再実装せず既知リングから安定した緯度経度重心を固定します。
技術的な質問
緯度経度頂点から多角形重心をどう計算しますか?
verticesを{lat, lon}オブジェクトの配列(少なくとも3)としてJSONで送ります。応答は面積加重重心のlatとlonに加えsigned_areaを返します。
頂点が3未満の場合は?
多角形重心には少なくとも3つの順序付き頂点が必要なためinvalid_inputで失敗し、その検証失敗は課金されません。
多角形重心計算機は無料ですか?
ブラウザツールは端末上で無料です。APIは成功項目ごとに前払いKIT残高から$0.002で、検証失敗は課金されません。