跳到主要内容
跳到主要内容

几何处理函数

几何

几何函数可用于计算 POLYGON、LINESTRING、MULTIPOLYGON、MULTILINESTRING、RING 和 POINT 等几何类型的周长和面积。将这些几何对象表示为 Geometry 类型。若输入值为 NULL,则以下所有函数均返回 0。

perimeterCartesian

在笛卡尔(平面)坐标系下计算给定 Geometry 对象的周长。

语法

perimeterCartesian(geom)

参数

  • geom — Geometry 对象。Geometry

返回值

  • 数值 — 对象在该坐标系下的周长,单位与坐标系一致。Float64

示例

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;
┌─perimeterCartesian(geom)─┐
│ 4.0                      │
└──────────────────────────┘

areaCartesian

在笛卡尔坐标系下计算给定 Geometry 对象的面积。

语法

areaCartesian(geom)

参数

  • geom — Geometry 对象。Geometry

返回值

  • 数值 — 对象在坐标系单位中的面积。Float64

示例

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;
┌─areaCartesian(geom)─┐
│ -1                  │
└─────────────────────┘

perimeterSpherical

计算球面上 Geometry 对象的周长。

语法

perimeterSpherical(geom)

参数

  • geom — Geometry 对象。Geometry

返回值

示例

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;
┌─perimeterSpherical(geom)─┐
│ 0                        │
└──────────────────────────┘

areaSpherical

计算球面上 Geometry 对象的面积。

语法

areaSpherical(geom)

参数

  • geom — Geometry 类型的几何对象。参见 Geometry

返回值

  • 数值 — 面积。参见 Float64

示例

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;
┌─areaSpherical(geom)────┐
│ -0.0003046096848622019 │
└────────────────────────┘