跳到主要内容

创建几何值函数

创建几何值函数用于以各种格式(如 Well-Known Text (WKT) 或 Well-Known Binary (WKB))创建几何图形。seekdb 当前版本所支持的创建几何值的函数包括 ST_GeomFromText()ST_GeometryFromText()ST_GeomFromWKB()ST_GeometryFromWKB()_ST_MakePoint

  • ST_GeomFromText():从 WKT 格式的字符串中创建几何图形。
  • ST_GeometryFromText():功能上与 ST_GeomFromText() 相似,也是从 WKT 格式的字符串创建几何图形。不同的数据库系统可能会提供不同命名的函数,但功能类似。
  • ST_GeomFromWKB():从 WKB 格式的二进制数据中创建几何图形。
  • ST_GeometryFromWKB(): 功能上与 ST_GeomFromWKB() 相似,也是从 WKB 格式的二进制数据创建几何图形。
  • _ST_MakePoint:用于创建新的点几何对象。

ST_GeomFromText 和 ST_GeometryFromText

ST_GeomFromText()ST_GeometryFromText() 函数将 Well-Known Text(WKT) 表示形式和可选的空间参考系统标识符 (SRID) 作为参数,返回相应的几何图形。有关 WKT 格式的说明,请参见 空间数据格式

ST_GeomFromText() 接受任何几何类型的 WKT 值作为其第一个参数。其他函数提供特定类型的构造函数,用于构造每种几何类型的几何值。 函数的语法如下:

ST_GeomFromText(wkt [, srid [, options]]), ST_GeometryFromText(wkt [, srid [, options]])

示例如下:

SET @geo = "MULTILINESTRING((10 10, 11 11), (9 9, 10 10))";
Query OK, 0 rows affected (0.000 sec)

SELECT ST_AsText(ST_GeomFromText(@geo));
+--------------------------------------------+
| ST_AsText(ST_GeomFromText(@geo)) |
+--------------------------------------------+
| MULTILINESTRING((10 10,11 11),(9 9,10 10)) |
+--------------------------------------------+
1 row in set (0.001 sec)

ST_GeomFromWKB 和 ST_GeometryFromWKB

ST_GeomFromWKB()ST_GeometryFromWKB() 函数将包含 Well-Known Binary (WKB) 表示和可选的空间参考系统标识符 (SRID) 的 BLOB 作为参数,返回相应的几何图形。有关 WKB 格式的说明,请参见 空间数据格式

函数的语法如下:

ST_GeomFromWKB(wkb [, srid [, options]]), ST_GeometryFromWKB(wkb [, srid [, options]])

_ST_MakePoint

_ST_MakePoint 用于创建一个点对象。这个函数通常在处理地图数据或需要准确地表示地理位置的应用中使用。

语法如下:

_ST_MakePoint(x, y, [z])

参数释义:

  • x:X 坐标值。

  • y:Y 坐标值。

  • z:可选项,Z 坐标值。

    • 若不输入 z,输出的点为 (x, y) 的二维(2D)点。
    • 若输入 z,输出的点为 (x, y,z) 的三维(3D)点。
信息
  • _ST_MakePoint 暂不支持创建四维(4D)点。

  • _ST_MakePoint 函数接受整数(int)、浮点数(double)以及字符串格式的输入,并将这些输入转换为双精度浮点数(double)以创建点对象。

示例如下:

  • 创建一个 2D 点。

    SELECT ST_ASTEXT(_st_makepoint(10, 20));

    返回结果如下:

    +----------------------------------+
    | ST_ASTEXT(_st_makepoint(10, 20)) |
    +----------------------------------+
    | POINT(10 20) |
    +----------------------------------+
    1 row in set (0.001 sec)
  • 创建一个 3D 点。

    SELECT ST_ASTEXT(_st_makepoint(10, -20, 5));

    返回结果如下:

    +--------------------------------------+
    | ST_ASTEXT(_st_makepoint(10, -20, 5)) |
    +--------------------------------------+
    | POINT Z (10 -20 5) |
    +--------------------------------------+
    1 row in set (0.001 sec)

参数的注意事项

创建几何值函数中几何参数何参数的返回值为非 NULL,以下情况除外:

  • 如果任何几何参数为 NULL 或不是语法格式不正确,则返回值为 NULL

  • 可选的 options 参数可以使地理坐标的纬度和经度按照几何参数的空间参考系统指定的顺序进行解析。options 由逗号分隔的 key=value 列表组成。key 值只能是 axis-order,允许的值为 lat-longlong-latsrid-defined(默认值)。如果 options 参数为 NULL,则返回值为 NULL。如果选项参数无效,则会发生报错。

  • 如果 SRID 参数引用未定义的空间参考系统 (SRS),则会发生 ER_SRS_NOT_FOUND 错误。

  • 对于地理 SRS 几何参数,如果任何参数的经度或纬度超出范围(范围以度为单位,如果 SRS 使用其他单位,则范围使用其单位中的相应值),则会发生报错:

    • 如果经度值不在范围 (-180, 180] 内,则会发生 ER_LONGITUDE_OUT_OF_RANGE 错误。

    • 如果纬度值不在 [−90, 90] 范围内,则会发生 ER_LATITUDE_OUT_OF_RANGE 错误。