名稱

ST_Area — 傳回多邊形幾何的面積。

概要

float ST_Area(geometry g1);

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

描述

傳回多邊形幾何的面積。對於幾何類型,會計算二維笛卡爾(平面)面積,單位由 SRID 指定。對於地理類型,預設情況下,面積是在球體上計算,單位為平方公尺。若要使用較快但較不精確的球面模型計算面積,請使用 ST_Area(geog,false)

增強功能:2.0.0 - 引入了對二維多面體表面的支援。

增強功能:2.2.0 - 使用 GeographicLib 在球體上進行測量,以提高準確性和穩健性。需要 PROJ >= 4.9.0 才能利用新功能。

變更:3.0.0 - 不再依賴 SFCGAL。

此方法實作了 OGC Simple Features Implementation Specification for 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;