Name

ST_Area — Gibt den geometrischen Schwerpunkt einer Geometrie zurück.

Synopsis

float ST_Area(geometry g1);

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

Beschreibung

Gibt den Flächeninhalt von Polygonen und Mehrfachpolygonen zurück. Gibt den Flächeninhalt der Datentypen "ST_Surface" und "ST_MultiSurface" zurück. Beim geometrischen Datentyp wird die kartesische 2D-Fläche ermittelt und in den Einheiten des SRID ausgegeben. Beim geographischen Datentyp wird die Fläche standardmäßig auf einem Referenzellipsoid ermittelt und in Quadratmeter ausgegeben. Mit ST_Area(geog,false) kann der Flächeninhalt auf einer Kugel ermittelt werden; dies ist zwar schneller aber auch weniger genau.

Erweiterung: Mit 2.0.0 wurde 2D-Unterstützung für polyedrische Oberflächen eingeführt.

Erweiterung: 2.2.0 - die Messung auf dem Referenzellipsoid wird mit der Bibliothek "GeographicLib" durchgeführt. Dadurch wurde die Genauigkeit und die Robustheit erhöht. Um die Vorteile dieser neuen Funktionalität zu nutzen, benötigen Sie Proj >= 4.9.0.

Geändert: 3.0.0 - hängt nicht mehr von SFCGAL ab.

Diese Methode implementiert die OGC Simple Features Implementation Specification for SQL 1.1.

Diese Methode setzt die SQL/MM-Spezifikation um. SQL-MM 3: 8.1.2, 9.5.3

Diese Funktion unterstützt polyedrische Flächen.

[Note]

Bei polyedrischen Oberflächen wird nur 2D (nicht 2.5D) unterstützt. Bei 2.5D kann ein Ergebnis ungleich null geliefert werden, wenn die Oberflächen vollständig in der XY-Ebene liegen.

Beispiele

Gibt den Flächeninhalt eines Grundstücks in Massachusetts - in Quadratfuß und konvertiert in Quadratmeter - zurück. Anmerkung: Wegen "Massachusetts State Plane Feet" (EPSG:2249) wird der Flächeninhalt in Quadratfuß ausgegeben

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

Gibt den Flächeninhalt in Quadratfuß aus und transformiert nach "Massachusetts state plane meters" (EPSG:26986) um Quadratmeter zu erhalten. Da die Fläche in "Massachusetts State Plane Feet" (EPSG:2249) vorliegt, wird der Flächeninhalt in Quadratfuß ausgegeben. Die transformierte Fläche ist in Quadratmeter, da sie in EPSG:26986 "Massachusetts state plane meters" (EPSG:26986) vorliegt.

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

Gibt den Flächeninhalt in Quadratfuß und in Quadratmeter für den geographischen Datentyp zurück. Beachten Sie bitte, dass wir den geometrischen in den geographischen Datentyp umwandeln (dafür muss die Geometrie in WGS84 lon lat 4326 vorliegen). Beim geographischen Datentyp wird immer in Meter gemessen. Dies ist nur für Vergleichszwecke gedacht, da Ihre Tabelle üblicherweise bereits den geographischen Datentyp aufweisen wird.

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

Wenn Ihre Daten bereits in der Geografie enthalten sind:

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