名前

ST_Area — ポリゴンまたはマルチポリゴンの場合にはサーフェスの面積を返します。ジオメトリ型の「面積」はSRIDに基づく単位で、ジオグラフィ型の面積は平方メートルです。

概要

float ST_Area(geometry g1);

float ST_Area(geography geog, boolean use_spheroid=true);

説明

ポリゴンまたはマルチポリゴンの場合にはサーフェスの面積を返します。ST_SurfaceまたはST_MultiSurface値の面積計測を返します。ジオメトリ型の面積はSRIDに基づく単位です。ジオグラフィ型の面積は平方メートルで、デフォルトでは回転楕円体についての計測です(現在はWGS 84のみ)。計算速度が速い反面精度が落ちる球面での計測を行うにはST_Area(geog,false)とします。

機能強化: 2.0.0 - 2次元多面体サーフェスが導入されました。

このメソッドはOpenGIS Simple Features Implementation Specification for SQL 1.1.に準拠しています。

このメソッドはSQL/MM仕様に準拠しています。 SQL-MM 3: 8.1.2, 9.5.3

この関数は多面体サーフェスに対応しています。

[注記]

多面体サーフェスについて、2次元多面体サーフェスのみ対応します(2.5次元は対応しません)。2.5次元について、0でない答が与えられるかも知れませんが、完全にXY平面に付いているサーフェスのみです。

このメソッドはSFCGALを使っても提供されます。

マサチューセッツのプロットから平方フィートの面積を返すものと、乗算で平方フィートから平方メートルに変換するものです。2249はマサチューセッツ州フィート平面であるので、平方フィートで面積が出ることに注意して下さい。

SELECT ST_Area(the_geom) As sqft, ST_Area(the_geom)*POWER(0.3048,2) As sqm
                FROM (SELECT
                ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
                        743265 2967450,743265.625 2967416,743238 2967416))',2249) ) As foo(the_geom);
  sqft   |     sqm
---------+-------------
 928.625 | 86.27208552

平方フィートの面積を返すものと、マサチューセッツ州メートル平面(26986)に変換して平方メートルを得るものです。2249はマサチューセッツ州フィート平面であり、26986はマサチューセッツ州メートル平面であることに注意して下さい。

SELECT ST_Area(the_geom) As sqft, ST_Area(ST_Transform(the_geom,26986)) As sqm
                FROM (SELECT
                ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,
                        743265 2967450,743265.625 2967416,743238 2967416))',2249) ) As foo(the_geom);
  sqft   |       sqm
---------+------------------
 928.625 | 86.2724304199219
                        

ジオグラフィ型を使って平方フィートと平方メートルを返すものです。 ジオメトリをジオグラフィに変換することに注意して下さい(変換に先立ってジオメトリがWGS 84緯度経度の4326であることを確認します)。ジオグラフィは常にメートルで計測されます。これは比較のためのデモンストレーションです。通常は、ジオグラフィ型が既に格納されているものです。

SELECT ST_Area(the_geog)/POWER(0.3048,2) As sqft_spheroid,  ST_Area(the_geog,false)/POWER(0.3048,2) As sqft_sphere, ST_Area(the_geog) As sqm_spheroid
                FROM (SELECT
                geography(
                ST_Transform(
                        ST_GeomFromText('POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))',
                                2249
                                ) ,4326
                        )
                )
        ) As foo(the_geog);
 sqft_spheroid   |   sqft_sphere    |   sqm_spheroid
-----------------+------------------+------------------
928.684405217197 | 927.186481558724 | 86.2776044452694

 -- データが既にジオグラフィ型である場合
 SELECT ST_Area(the_geog)/POWER(0.3048,2) As  sqft, ST_Area(the_geog) As sqm
        FROM somegeogtable;

関連情報

ST_GeomFromText, ST_GeographyFromText, ST_SetSRID, ST_Transform