文档

量测函数

更新时间:

时空函数中的量测函数用于返回指定Geometry对象的几何空间度量,也可以用于判断Geometry对象的合法性。量测函数可以和构造函数、输出函数等其他时空函数搭配使用。本文介绍Lindorm流引擎支持的时空量测函数。

函数列表

函数

说明

ST_Area

返回指定多边形Geometry对象的面积。

ST_Distance

返回两个Geometry对象在二维平面上的欧氏距离。

ST_DistanceSphere

返回两个Geometry对象在球面上的最短距离。

ST_IsValid

判断指定的Geometry对象是否合法。

ST_Length

返回指定Geometry对象二维空间内的长度。

ST_LengthSphere

返回指定的Geometry对象的球面长度。

ST_Area

返回指定多边形Geometry对象的面积。

语法

double ST_Area(geometry g)

参数说明

参数

描述

g

指定的Geometry对象。

说明
  • Geometry对象支持Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon和GeometryCollection类型。

  • 对于Geometry对象,使用SRID指定的单位确定二维笛卡尔区域。Lindorm Ganos SQL使用的SRID为4326,指定的单位为度(degree)。

  • 如果指定的Polygon类型围成多个封闭图形,则返回顺时针和逆时针围成的图形面积相减取绝对值。

  • 如果Geometry对象不是Polygon类型,则返回0。

示例

  • 示例1:指定Geometry对象是Polygon类型。

    SELECT ST_Area(ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')) AS area;

    返回结果:

    +------+
    | area |
    +------+
    | 36.0 |
    +------+
  • 示例2:指定Geometry对象为LINESTRING类型。

    SELECT ST_Area(ST_GeomFromText('LINESTRING(1 3,5 6)')) AS area;

    返回结果:

    +------+
    | area |
    +------+
    | 0.0  |
    +------+

ST_Distance

返回两个Geometry对象在二维平面上的欧氏距离,单位为degree。

语法

double ST_Distance(geometry geomA, geometry geomB)

参数说明

参数

描述

geomA

指定的第一个Geometry对象。

geomB

指定的第二个Geometry对象。

说明
  • Geometry对象支持Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon和GeometryCollection类型。

  • 如果其中一个Geometry对象为EMPTY,则返回0。

示例

  • 示例1

    SELECT ST_Distance(ST_GeomFromText('POINT(-72.1235 42.3521)'),ST_GeomFromText('LINESTRING(-72.1260 42.45, -72.123 42.1546)')) AS d;

    返回结果:

    +-----------------------+
    |           d           |
    +-----------------------+
    | 0.0015056772638228177 |
    +-----------------------+
  • 示例2

    SELECT ST_Distance(ST_GeomFromText('POINT(-72.1235 42.3521)'),ST_GeomFromText('LINESTRING EMPTY')) AS d;

    返回结果:

    +---+
    | d |
    +---+
    |0.0|
    +---+

ST_DistanceSphere

返回两个Geometry对象在球面上的最短距离,单位为米。

语法

double ST_DistanceSphere(geometry geomA, geometry geomB)

参数说明

参数

描述

geomA

指定的第一个Geometry对象。

geomB

指定的第二个Geometry对象。

说明
  • Geometry对象支持Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon和GeometryCollection类型。

  • 如果其中一个Geometry对象为EMPTY,则返回0。

  • 如果其中一个Geometry对象为Polygon或者LineString类型,计算结果可能存在误差,误差为厘米级别。

示例

  • 示例1

    SELECT ST_DistanceSphere(ST_GeomFromText('POINT(-72.1235 42.3521)'),ST_GeomFromText('LINESTRING(-72.1260 42.45, -72.123 42.1546)')) AS d;

    返回结果:

    +--------------------+
    |         d          |
    +--------------------+
    | 124.53287523764577 |
    +--------------------+
  • 示例2

    SELECT ST_DistanceSphere(ST_GeomFromText('POINT(-72.1235 42.3521)'),ST_GeomFromText('LINESTRING EMPTY')) AS d;

    返回结果:

    +---+
    | d |
    +---+
    |0.0|
    +---+

ST_IsValid

判断指定的Geometry对象是否合法。

说明

Geometry对象不合法的情况可能为:Polygon对象自相交、MultiPolygon对象内的Polygon对象重叠等。

语法

boolean ST_IsValid(geometry g)

参数说明

参数

描述

g

指定的Geometry对象。

示例

SELECT ST_IsValid(ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')) as is_valid;

返回结果:

+--------------------+
| "ST_IsValid"       |
+--------------------+
| true               |
+--------------------+

返回结果为true表示ID为110000的几何对象合法。如果返回结果为false,则表示ID为110000的几何对象不合法。

ST_Length

返回指定Geometry对象二维空间内的长度,单位为degree。

语法

double ST_Length(geometry g)

参数说明

参数

描述

g

指定的Geometry对象。

说明
  • 如果Geometry对象为LineString类型,则返回LineString在笛卡尔坐标系中的长度。

  • 如果Geometry对象为Polygon类型,则返回0。

示例

  • 示例1

    SELECT ST_Length(ST_GeomFromText('LINESTRING(1 3,5 6)')) AS length;

    返回结果:

    +--------+
    | length |
    +--------+
    | 5.0    |
    +--------+
  • 示例2

    SELECT ST_Length(ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')) AS length;

    返回结果:

    +--------+
    | length |
    +--------+
    | 0.0    |
    +--------+

ST_LengthSphere

返回指定的Geometry对象的球面长度,单位为米。

语法

double ST_LengthSphere(geometry g)

参数说明

参数

描述

g

指定的Geometry对象。

说明
  • 如果Geometry对象为LineString类型,则返回LineString在球面上的长度。

  • 如果Geometry对象为Polygon类型,则返回0。

示例

  • 示例1

    SELECT ST_LengthSphere(ST_GeomFromText('LINESTRING(1 3,5 6)')) AS length;

    返回结果:

    +------------------+
    |      length      |
    +------------------+
    | 554137.283806292 |
    +------------------+
  • 示例2

    SELECT ST_LengthSphere(ST_GeomFromText('POLYGON((2 2, 2 8, 8 8, 8 2, 2 2))')) AS length;

    返回结果:

    +--------+
    | length |
    +--------+
    | 0.0    |
    +--------+
  • 本页导读 (1)
文档反馈