geom字段的面积是多少?

What is the area of geom field?

我想检查几何值的面积。

几何值为POLYGONPOINTMULTI POLYGON。 该字段的类型为 geometry

我检查geom字段的srid:

select st_srid(geometry) 
from my_table

我得到了 srid=32636。

我在这里查看: https://epsg.io/32636 好像单位是米。

现在我想得到每个值的面积(以米为单位):

select st_area(geometry)
from my_table

我得到的值非常小(0.0002,或 0.000097,或 0.33,....)。

我想确定:

由于您的 SRS 单位是米,ST_Area 将 return 面积以平方米为单位。以下示例使用具有不同单位的 SRS 计算多边形的面积:

WITH j (geom) AS (
  VALUES ('SRID=32636;
          POLYGON((-1883435.029648588 6673769.700215263,-1883415.1158478875 6673776.142528819,-1883411.8478185558 6673765.073005969,-1883431.7724919873 6673758.967942359,-1883435.029648588 6673769.700215263))'::GEOMETRY)) 
SELECT 
  ST_Area(geom) AS sqm,
  ST_Area(
    ST_Transform(geom,2249)) AS sqft 
FROM j;

        sqm        |       sqft        
-------------------+-------------------
 237.6060612927441 | 2341.135411173445
  • EPSG 32636:单位为米(椭圆体 WGS84)
  • EPSG 2249:单位为英尺(椭圆体 GRS1980)

针对您的问题:

Does those values means square meter (m^2) ?

是的。

So the values are less than 1 square meter ?

是的。我很好奇你的几何学是关于什么的。也许您混淆了不同的 SRS?

不相关的注释:具有相同单位的 SRS 的空间操作可能仍会产生不同的结果,因为它们也可能使用不同的 ellipsoids。下面的示例将使用以米为单位但不同椭球体的 SRS 来计算相同几何体的面积。注意结果的差异:

WITH j (geom) AS (
  VALUES ('SRID=32636;
          POLYGON((-1883435.029648588 6673769.700215263,-1883415.1158478875 6673776.142528819,-1883411.8478185558 6673765.073005969,-1883431.7724919873 6673758.967942359,-1883435.029648588 6673769.700215263))'::GEOMETRY)) 
SELECT 
  ST_Area(geom) AS sqm_32636,
  ST_Area(
    ST_Transform(geom,26986)) AS sqm_26986
FROM j;


     sqm_32636     |     sqm_26986      
-------------------+--------------------
 237.6060612927441 | 217.49946674261872
  • EPSG 32636:单位为米(椭圆体 WGS84)
  • EPSG 26986: 单位为米 (Ellipsoid GRS1980)

..但如果你坚持使用相同的椭球体和单位,数学更有意义:

WITH j (geom) AS (
  VALUES ('SRID=32636;
          POLYGON((-1883435.029648588 6673769.700215263,-1883415.1158478875 6673776.142528819,-1883411.8478185558 6673765.073005969,-1883431.7724919873 6673758.967942359,-1883435.029648588 6673769.700215263))'::GEOMETRY)) 
SELECT 
  ST_Area(
    ST_Transform(geom,2249)) AS sqft_2249,
  ST_Area(
    ST_Transform(geom,2249)) * 0.3048 ^ 2 AS sqm_2249, -- manually converted from sqm to sqft
  ST_Area(
    ST_Transform(geom,26986)) AS sqm_26986
FROM j;

     sqft_2249     |      sqm_2249      |     sqm_26986      
-------------------+--------------------+--------------------
 2341.135411173445 | 217.49859674966302 | 217.49946674261872

演示:db<>fiddle