Name

ST_Area — Renvoie l'aire d'une géométrie polygonale.

Synopsis

float ST_Area(geometry g1);

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

Description

Renvoie l'aire d'une géométrie polygonale. Pour les types geometry, une surface cartésienne 2D (planaire) est calculée, avec des unités spécifiées par le SRID. Pour les types geography, la surface est déterminée par défaut sur un sphéroïde avec des unités en mètres carrés. Pour calculer la surface en utilisant le modèle sphérique, plus rapide mais moins précis, utilisez ST_Area(geog,false).

Amélioration : 2.0.0 - la prise en charge des surfaces polyédriques 2D a été introduite.

Amélioration : 2.2.0 - mesure sur sphéroïde effectuée avec GeographicLib pour une meilleure précision et robustesse. Nécessite PROJ >= 4.9.0 pour profiter de la nouvelle fonctionnalité.

Modifié : 3.0.0 - ne dépend plus de SFCGAL.

Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1.

Cette méthode implémente la spécification SQL/MM.

SQL-MM 3: 8.1.2, 9.5.3

Cette fonction prend en charge les surfaces Polyhedral.

[Note]

Pour les surfaces polyédriques, ne prend en charge que les surfaces polyédriques 2D (pas 2.5D). Pour les surfaces 2.5D, la réponse peut être différente de zéro, mais uniquement pour les faces qui se trouvent entièrement dans le plan XY.

Exemples

Retourne la superficie en pieds carrés d'un terrain du Massachusetts et multipliez par la conversion pour obtenir des mètres carrés. Notez que la surface est exprimée en pieds carrés, car EPSG:2249 correspond aux pieds de plan de l'État du Massachusetts.

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 │
└─────────┴─────────────┘

Retourne la surface en pieds carrés et transformez-la en mètres du plan de l'État du Massachusetts (EPSG:26986) pour obtenir des mètres carrés. Notez qu'il s'agit de pieds carrés car 2249 est le plan de l'État du Massachusetts en pieds et que la surface transformée est en mètres carrés car EPSG:26986 est le plan de l'État du Massachusetts en mètres

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 │
└─────────┴─────────────────┘

Retourne la surface en pieds carrés et en mètres carrés en utilisant le type de données geography. Notez que nous transformons notre geometry en geography (avant de pouvoir le faire, assurez-vous que votre géométrie est en WGS 84 long lat 4326). La geography se mesure toujours en mètres. Il s'agit d'une démonstration à des fins de comparaison. Normalement, votre table sera déjà stockée dans le type de données geography.

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 │
└──────────────────┴──────────────────┴──────────────────┘

Si vos données sont déjà dans le type geography :

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

Voir aussi

ST_3DArea, ST_GeomFromText, ST_GeographyFromText, ST_SetSRID, ST_Transform