地理函数

编辑

此功能处于测试阶段,可能随时更改。其设计和代码不如正式 GA 功能成熟,按“原样”提供,不提供任何担保。测试版功能不受正式 GA 功能的支持服务水平协议 (SLA) 的约束。

地理函数可与存储在 geo_pointgeo_shapeshape 字段中或由其他地理函数返回的几何图形一起使用。

限制

编辑

geo_pointgeo_shapeshape 类型在 SQL 中表示为几何图形,并且可以互换使用,但以下情况除外

  • geo_shapeshape 字段没有文档值,因此这些字段不能用于过滤、分组或排序。
  • geo_points 字段默认情况下已编制索引并具有文档值,但是仅存储和编制索引纬度和经度,并且原始值会损失一些精度(纬度为 4.190951585769653E-8,经度为 8.381903171539307E-8)。接受高度分量,但不会将其存储在文档值中或编制索引。因此,在过滤、分组或排序中调用 ST_Z 函数将返回 null

几何图形转换

编辑

ST_AsWKT

编辑

摘要

ST_AsWKT(
    geometry 
)

输入:

几何图形。如果为 null,则函数返回 null

输出: 字符串

描述: 返回 geometry 的 WKT 表示形式。

SELECT city, ST_AsWKT(location) location FROM "geo" WHERE city = 'Amsterdam';

     city:s    |     location:s
Amsterdam      |POINT (4.850312 52.347557)

ST_WKTToSQL

编辑

摘要

ST_WKTToSQL(
    string 
)

输入:

几何图形的字符串 WKT 表示形式。如果为 null,则函数返回 null

输出: 几何图形

描述: 从 WKT 表示形式返回几何图形。

SELECT CAST(ST_WKTToSQL('POINT (10 20)') AS STRING) location;

   location:s
POINT (10.0 20.0)

几何图形属性

编辑

ST_GeometryType

编辑

摘要

ST_GeometryType(
    geometry 
)

输入:

几何图形。如果为 null,则函数返回 null

输出: 字符串

描述: 返回 geometry 的类型,例如 POINT、MULTIPOINT、LINESTRING、MULTILINESTRING、POLYGON、MULTIPOLYGON、GEOMETRYCOLLECTION、ENVELOPE 或 CIRCLE。

SELECT ST_GeometryType(ST_WKTToSQL('POINT (10 20)')) type;

      type:s
POINT

ST_X

编辑

摘要

ST_X(
    geometry 
)

输入:

几何图形。如果为 null,则函数返回 null

输出: 双精度浮点数

描述: 返回几何图形中第一个点的经度。

SELECT ST_X(ST_WKTToSQL('POINT (10 20)')) x;

      x:d
10.0

ST_Y

编辑

摘要

ST_Y(
    geometry 
)

输入:

几何图形。如果为 null,则函数返回 null

输出: 双精度浮点数

描述: 返回几何图形中第一个点的纬度。

SELECT ST_Y(ST_WKTToSQL('POINT (10 20)')) y;

      y:d
20.0

ST_Z

编辑

摘要

ST_Z(
    geometry 
)

输入:

几何图形。如果为 null,则函数返回 null

输出: 双精度浮点数

描述: 返回几何图形中第一个点的高度。

SELECT ST_Z(ST_WKTToSQL('POINT (10 20 30)')) z;

      z:d
30.0

ST_Distance

编辑

摘要

ST_Distance(
    geometry, 
    geometry  
)

输入:

源几何图形。如果为 null,则函数返回 null

目标几何图形。如果为 null,则函数返回 null

输出: 双精度浮点数

描述: 返回几何图形之间的距离(以米为单位)。两个几何图形都必须是点。

SELECT ST_Distance(ST_WKTToSQL('POINT (10 20)'), ST_WKTToSQL('POINT (20 30)')) distance;

   distance:d
1499101.2889383635