ST_Area — 返回多边形几何的面积。
float ST_Area(
geometry g1)
;
float ST_Area(
geography geog, boolean use_spheroid = true)
;
返回多边形几何的面积。对于几何类型,将计算 2D 笛卡尔(平面)面积,单位由 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
此函数支持多面体表面。
对于多面体表面,只支持 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;