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-使用GeogicLib对椭球体进行测量,以提高精度和稳健性。需要项目 > =4.9.0以利用新功能。
更改:3.0.0-不再依赖SFCGAL。
This method implements the
OGC Simple Features
Implementation Specification for SQL 1.1.
This method implements the SQL/MM specification. SQL-MM 3:8.1.2、9.5.3
This function supports Polyhedral surfaces.
![]() |
|
对于多面体曲面,仅支持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;