名前

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;
			

関連情報

ST_GeomFromText, ST_GeographyFromText, ST_SetSRID,ST_Transform