跳转到主要内容

Geometry

Geometry 函数可用于计算 POLYGON、LINESTRING、MULTIPOLYGON、MULTILINESTRING、RING 和 POINT 等几何类型的周长和面积。请在 Geometry 类型中使用几何对象。如果输入值为 NULL,则以下所有函数都返回 0。

perimeterCartesian

计算给定 Geometry 对象在笛卡尔 (平面) 坐标系中的周长。 语法
perimeterCartesian(geom)
参数
  • geom — Geometry 对象。Geometry
返回值
  • 数值 — 该对象的周长,以坐标系单位表示。Float64
示例
Query
CREATE TABLE IF NOT EXISTS geo_dst (geom Geometry) ENGINE = Memory();
INSERT INTO geo_dst SELECT readWKT('POLYGON((0 0,1 0,1 1,0 1,0 0))');
SELECT perimeterCartesian(geom) FROM geo_dst;
Response
┌─perimeterCartesian(geom)─┐
│ 4.0                      │
└──────────────────────────┘

areaCartesian

计算给定 Geometry 对象在笛卡尔坐标系下的面积。 语法
areaCartesian(geom)
参数
  • geom — Geometry 对象。Geometry
返回值
  • 数值 — 对象的面积,以坐标系单位表示。Float64
示例
Query
CREATE TABLE IF NOT EXISTS geo_dst (geom Geometry) ENGINE = Memory();
INSERT INTO geo_dst SELECT readWKT('POLYGON((0 0,1 0,1 1,0 1,0 0))');
SELECT areaCartesian(geom) FROM geo_dst;
Response
┌─areaCartesian(geom)─┐
│ -1                  │
└─────────────────────┘

perimeterSpherical

计算球面上 Geometry 对象的周长。 语法
perimeterSpherical(geom)
参数
  • geom — Geometry 对象。Geometry
返回值 示例
Query
CREATE TABLE IF NOT EXISTS geo_dst (geom Geometry) ENGINE = Memory();
INSERT INTO geo_dst SELECT readWKT('LINESTRING(0 0,1 0,1 1,0 1,0 0)');
SELECT perimeterSpherical(geom) FROM geo_dst;
Response
┌─perimeterSpherical(geom)─┐
│ 0                        │
└──────────────────────────┘

areaSpherical

计算球面上 Geometry 对象的面积。 语法
areaSpherical(geom)
参数 返回值 示例
Query
CREATE TABLE IF NOT EXISTS geo_dst (geom Geometry) ENGINE = Memory();
INSERT INTO geo_dst SELECT readWKT('POLYGON((0 0,1 0,1 1,0 1,0 0))');
SELECT areaSpherical(geom) FROM geo_dst;
Response
┌─areaSpherical(geom)────┐
│ -0.0003046096848622019 │
└────────────────────────┘
最后修改于 2026年6月10日