WGS84楕円体の測地線多角形面積計算
赤道上の緯度・経度0°から1°までの1度四方は、12308776177.673平方メートル、つまり1230877.6177673ヘクタールです。境界に沿って3つ以上の頂点を順に入れると、WGS84での実際の面積が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
処理はブラウザ内で完結します。ファイルは送信されません。無料でご利用いただけます。
測地線多角形面積計算では、WGS84楕円体上の緯度・経度の頂点で描かれた境界を測定します。座標を平面地図上の点として扱わず、連続する各頂点を楕円体上の測地線で結び、囲まれた表面積を評価します。結果は平方メートルとヘクタールで返され、土地、環境、地図作成、測量関連の処理にすぐ利用できます。頂点を境界に沿った順序で指定してください。最後の頂点から最初の頂点への辺は自動的に追加されます。
明確で順序の正しい境界をご用意ください
少なくとも3個の頂点を指定し、それぞれに十進度の緯度と経度を含めてください。境界を歩く順序で、時計回りまたは反時計回りに並べます。計算機が多角形を自動的に閉じるため、末尾で最初の点を繰り返す必要はありません。
繰り返した場合も閉点として認識されます。経度は-180から180、緯度は-90から90の範囲で指定してください。連続する同一点は有効な辺を作らないため拒否されます。
この機能は単純な境界を前提とします。自己交差、重複したループ、順不同の点群は計算前に修正してください。返される値は囲まれた小さい側の正の面積で、回り方には依存しません。
再現可能な自動処理のため、要求前に座標を丸めたり並べ替えたりせず、元の精度と境界順序を維持してください。これにより、観測または元システムから出力された実際の形状を保てます。
測地線の辺とWGS84面積をご理解ください
地理座標は曲面上にありますが、画面の地図は投影図です。投影された多角形を測ると、場所、縮尺、投影法に応じた歪みが生じます。本計算機はWGS84楕円体そのものを扱います。
隣接する各頂点について楕円体の逆解法で測地線を求め、最短の測地線辺をたどり、全経路に囲まれた表面を積分します。測地線は通常、Web Mercator上の直線とも、緯度一定の線とも一致しません。決定論的な計算では、解いた各測地線を距離に応じて有限分割し、楕円体帯域の面積積分を適用します。
結果は平方メートルの小数第3位まで丸め、その値からヘクタールを算出します。ほぼ対蹠点となる端点では最短辺が曖昧になるか、反復解法が収束しない場合があります。その際は不確かな数値ではなく明確な入力エラーを返します。
法的な地籍測量の代替ではありません。
用途に応じて結果を適切にお使いください
平方メートルは技術計算や直接比較に便利で、ヘクタールは農地、保全区域、公園、大きな区画で読みやすい単位です。収集時に座標範囲を検証し、送信境界の変更不能なコピーを保存し、結果を元の形状および座標参照系とともに記録してください。境界が反子午線を越える場合も自然な巡回順序を保ってください。
課金、登記、課税、建設、法令遵守に使う前に、適用されるデータと精度の基準をご確認ください。GPS精度、デジタイズ方法、境界の不確実性、測地基準系変換の影響が数値誤差を上回ることがあります。
活用例
農地の境界を測定する
ローカル投影法を選ばず、順序付きのGPSまたは地図の頂点を平方メートルとヘクタールに変換できます。
保全区域を確認する
環境境界の楕円体表面積を算出し、報告書やデータセットの検証に利用できます。
地図データの取込を検証する
取込時に面積を再計算し、申告面積がWGS84の結果と大きく異なるレコードを検出できます。
よくある質問
末尾で最初の頂点を繰り返す必要がありますか?
必要ありません。 最後の頂点は最初の頂点へ自動的に接続され、閉点を繰り返した入力も受け付けます。
時計回りでは面積が負になりますか?
いいえ。 時計回りでも反時計回りでも、囲まれた小さい側の同じ正の面積を返します。
地図上で辺は直線になりますか?
辺はWGS84楕円体上の最短測地線なので、投影地図では曲線に見える場合があります。
自己交差する多角形を送信できますか?
入力は単純で順序の正しい境界を対象とします。結果を利用する前に交差を修正または分割してください。
結果を公式の土地測量に使えますか?
使えません。WGS84楕円体上で地理的な面積を求める計算で、土地や環境、地図の作業には役立ちますが、法的な効力を持つ地籍測量の代わりにはなりません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/geo/geodesic-polygon-area \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"vertices":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":1},{"latitude":1,"longitude":0}]}'const res = await fetch("https://api.kit.forhosting.com/geo/geodesic-polygon-area", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"vertices": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/geodesic-polygon-area",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"vertices": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/geodesic-polygon-area", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"vertices":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":1},{"latitude":1,"longitude":0}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"vertices":[{"latitude":0,"longitude":0},{"latitude":0,"longitude":1},{"latitude":1,"longitude":1},{"latitude":1,"longitude":0}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/geodesic-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": [
{
"latitude": 0,
"longitude": 0
},
{
"latitude": 0,
"longitude": 1
},
{
"latitude": 1,
"longitude": 1
},
{
"latitude": 1,
"longitude": 0
}
]
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.geodesic_polygon_area",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_vertices | 1000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
用途に応じて結果を適切にお使いください
両フィールドは同じ計算面積を表すため、保存用の基準フィールドを一つ選び、もう一つを表示にお使いください。エンドポイントは決定論的でネットワークに依存せず、同じJSON入力から同じ出力が得られます。
技術的な質問
1回のリクエスト料金はいくらですか?
APIの基本料金は1リクエストあたり$0.002です。