名称

ST_Area — 返回多边形几何的面积。

概要

float ST_Area(geometry g1);

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

描述

返回多边形几何的面积。 对于几何类型,计算的是二维笛卡尔(平面)面积,单位由 SRID 指定。 对于地理类型,默认情况下在椭球体上确定面积,单位为平方米。 要使用更快但精度较低的球面模型计算面积,请使用 ST_Area(geog,false)

增强功能:2.0.0 - 引入了对 2D 多面体表面的支持。

增强功能:2.2.0 - 使用 GeographicLib 在椭球体上进行测量,以提高精度和鲁棒性。 需要 PROJ >= 4.9.0 才能利用新功能。

更改:3.0.0 - 不再依赖 SFCGAL。

此方法实现了OGC 简单要素 SQL 1.1 的实现规范。

此方法实现了 SQL/MM 规范。SQL-MM 3: 8.1.2, 9.5.3

此函数支持多面体表面。

[Note]

对于多面体表面,仅支持 2D 多面体表面(而不是 2.5D)。 对于 2.5D,可能会给出非零答案,但仅限于完全位于 XY 平面上的面。

示例

返回马萨诸塞州土地的面积(平方英尺),然后乘以转换系数得到平方米。 注意,这里是平方英尺,因为 EPSG:2249 是马萨诸塞州州平面英尺。

select ST_Area(geom) sqft,
    ST_Area(geom) * 0.3048 ^ 2 sqm
from (
         select 'SRID=2249;POLYGON((743238 2967416,743238 2967450,
				 743265 2967450,743265.625 2967416,743238 2967416))' :: geometry geom
     ) subquery;
┌─────────┬─────────────┐
│  sqft   │     sqm     │
├─────────┼─────────────┤
│ 928.625 │ 86.27208552 │
└─────────┴─────────────┘

返回平方英尺面积,并转换为马萨诸塞州州平面米 (EPSG:26986) 以获得平方米。 注意,这里是平方英尺,因为 2249 是马萨诸塞州州平面英尺,而转换后的面积是平方米,因为 EPSG:26986 是马萨诸塞州州平面米。

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       │
├─────────┼─────────────────┤
│ 928.625 │ 86.272430607008 │
└─────────┴─────────────────┘

使用地理数据类型返回平方英尺和平方米的面积。 请注意,我们将几何图形转换为地理图形(在执行此操作之前,请确保您的几何图形是 WGS 84 经纬度 4326)。 地理图形始终以米为单位进行测量。 这仅用于演示比较。 通常,您的表已经以地理数据类型存储。

select ST_Area(geog) / 0.3048 ^ 2 sqft_spheroid,
    ST_Area(geog, false) / 0.3048 ^ 2 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   │
├──────────────────┼──────────────────┼──────────────────┤
│ 928.684405784452 │ 927.049336105925 │ 86.2776044979692 │
└──────────────────┴──────────────────┴──────────────────┘

如果您的数据已经以地理图形存储

select ST_Area(geog) / 0.3048 ^ 2 sqft,
    ST_Area(the_geog) sqm
from somegeogtable;