ST_AREA
📄字数 1.3K
👁️阅读量 加载中...
功能描述
返回多边形几何体的面积。
语法格式
sql
DOUBLE ST_AREA(GEOMETRY geom);
DOUBLE ST_AREA(GEOGRAPHY geog, boolean use_spheroid = true);参数说明
- geom:第一个目标 GEOMETRY 对象。
- geog:第二个目标 GEOMETRY 对象。
- use_spheroid:距离测量是否使用椭球体,可选。
- TRUE:使用椭球体。
- FALSE:在球面上进行测量,计算更快。
函数返回类型
DOUBLE 类型
使用说明
- 对于几何类型,计算 2D 笛卡尔(平面)面积,单位由 SRID 指定。
- 对于地理类型,默认面积是在球体上确定的,单位为平方米。
- 该函数支持多面体曲面(POLYHEDRALSURFACE)。
- 对于多面体曲面,仅支持 2D 多面体曲面(不支持 2.5D)。 对于 2.5D,可能会给出非零答案,但仅限于完全位于 XY 平面中的面。
示例
返回马萨诸塞州一块土地的面积(以平方英尺为单位),然后乘以换算得到平方米。 请注意,这是以平方英尺为单位,因为 EPSG:2249 是马萨诸塞州平面英尺
sql
SQL> select ST_AREA(geom) sqft,
ST_AREA(geom) * 0.3048 * 0.3048 sqm
from (
select 'SRID=2249;POLYGON((743238 2967416,743238 2967450,
743265 2967450,743265.625 2967416,743238 2967416))'::GEOMETRY geom
) subquery;
+--------------+-------------+
| SQFT | SQM |
+--------------+-------------+
| 9.286250e+02 | 86.27208552 |
+--------------+-------------+
(1 row)返回面积平方英尺并转换为马萨诸塞州平面米 (EPSG:26986) 以获得平方米。 请注意,单位为平方英尺,因为 2249 是马萨诸塞州平面英尺,变换面积的单位是平方米,因为 EPSG:26986 是马萨诸塞州平面米。
sql
SQL> select ST_AREA(geom) sqft,
ST_AREA(ST_TRANSFORM(geom, 26986)) As sqm
from (
select
'SRID=2249;POLYGON((743238 2967416,743238 2967450,
743265 2967450,743265.625 2967416,743238 2967416))' :: GEOMETRY geom
) subquery;
+--------------+--------------+
| SQFT | SQM |
+--------------+--------------+
| 9.286250e+02 | 8.627243e+01 |
+--------------+--------------+
(1 row)使用地理数据类型返回面积平方英尺和平方米。
sql
SQL> select ST_AREA(geog) / 0.3048 * 0.3048 sqft_spheroid,
ST_AREA(geog, false) / 0.3048 * 0.3048 sqft_sphere,
ST_AREA(geog) sqm_spheroid
from (
select ST_TRANSFORM(
'SRID=2249;POLYGON((743238 2967416,743238 2967450,743265 2967450,743265.625 2967416,743238 2967416))'::GEOMETRY,
4326
) :: GEOGRAPHY geog
) as subquery;
+------------------------+-------------------------+--------------+
| SQFT_SPHEROID | SQFT_SPHERE | SQM_SPHEROID |
+------------------------+-------------------------+--------------+
| 86.2776043949415999996 | 86.14372702545579999864 | 8.627760e+01 |
+------------------------+-------------------------+--------------+
(1 row)