ST_Area — ポリゴンまたはマルチポリゴンの場合にはサーフェスの面積を返します.ジオメトリ型の面積はSRIDに基づく単位で,ジオグラフィ型の面積は平方メートルです.
float ST_Area(
geometry g1)
;
float ST_Area(
geography g1)
;
float ST_Area(
geography g1, boolean use_spheroid)
;
ポリゴンまたはマルチポリゴンの場合にはサーフェスの面積を返します.ST_SurfaceまたはST_MultiSurface値の面積計測を返します. ジオメトリ型の面積はSRIDに基づく単位です.ジオグラフィ型の面積は平方メートルで,デフォルトでは回転楕円体についての計測です(現在はWGS 84のみ). 計算速度が速い反面精度が落ちる球面での計測を行うにはST_Area(geog,false)とします.
このメソッドは OpenGIS Simple Features Implementation Specification for SQL 1.1.を実装するものです.
このメソッドはSQL/MM仕様の実装です. SQL-MM 3: 8.1.2, 9.5.3
マサチューセッツのプロットについて平方フィートでの面積を返し,平方メートルを得るために掛け算を行います. 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
平方フィートの面積を返し,ジオグラフィ型を使って平方メートルを返します.(WGS84経度緯度である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 --if your data is in geography already SELECT ST_Area(the_geog)/POWER(0.3048,2) As sqft, ST_Area(the_geog) As sqm FROM somegeogtable;