类别:

地理空间函数转换函数

TO_GEOMETRY

解析输入,并返回 GEOMETRY 类型的值。

另请参阅:

TRY_TO_GEOMETRYST_GEOMETRYFROMWKBST_GEOMETRYFROMWKT

语法

使用下列之一:

TO_GEOMETRY( <varchar_expression> [ , <srid> ] [ , <allow_invalid> ] )

TO_GEOMETRY( <binary_expression> [ , <srid> ] [ , <allow_invalid> ] )

TO_GEOMETRY( <variant_expression> [ , <srid> ] [ , <allow_invalid> ] )

TO_GEOMETRY( <geography_expression> [ , <srid> ] [ , <allow_invalid> ] )
Copy

实参

必填:

varchar_expression

实参必须是字符串表达式,它使用以下格式之一表示有效的几何对象:

  • WKT (已知文本)。

  • WKB (已知二进制)采用十六进制格式(不带前导 0x)。

  • EWKT (扩展的已知文本)。

  • EWKB (扩展的已知二进制文件)采用十六进制格式(不带前导 0x)。

  • GeoJSON。

binary_expression

实参必须是 WKB 或 EWKB 格式的二进制表达式。

variant_expression

实参必须是 GeoJSON 格式的 OBJECT。

geography_expression

实参必须是 GEOGRAPHY 类型的表达式。

可选:

srid

要使用的 SRID 的整数值。

allow_invalid

如果为 TRUE,即使输入形状无效且无法修复,指定函数也应返回 GEOGRAPHY 或 GEOMETRY 对象。有关详细信息,请参阅 指定如何处理无效的地理空间形状

返回

该函数返回 GEOMETRY 类型的值。

使用说明

  • 如果无法将输入解析为支持的格式之一(WKT、WKB、EWKT、EWKB、GeoJSON),则会引发错误。

  • 对于 GeoJSON、WKT 和 WKB 输入,如果未指定 srid 实参,则生成的 GEOMETRY 对象将 SRID 设置为 0。

  • 要从 WKT 或 EWKT 输入来构造 GEOMETRY 对象,还可以使用 ST_GEOMETRYFROMWKT

  • 要从 WKB 或 EWKB 输入来构造 GEOMETRY 对象,还可以使用 ST_GEOMETRYFROMWKB

示例

下面的示例演示如何使用 TO_GEOMETRY 函数将通过 WKT 表示的对象转换为 GEOMETRY 对象。该示例未指定 srid 实参,并且未在对象的输入表示形式中指定 SRID,因此 SRID 设置为 0。

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT TO_GEOMETRY('POINT(1820.12 890.56)');
Copy
+--------------------------------------+
| TO_GEOMETRY('POINT(1820.12 890.56)') |
|--------------------------------------|
| SRID=0;POINT(1820.12 890.56)         |
+--------------------------------------+

以下示例将通过 EWKT 表示的对象转换为 GEOMETRY 对象。输入 EKWT 指定要使用的 SRID :

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT TO_GEOMETRY('SRID=4326;POINT(1820.12 890.56)');
Copy
+------------------------------------------------+
| TO_GEOMETRY('SRID=4326;POINT(1820.12 890.56)') |
|------------------------------------------------|
| SRID=4326;POINT(1820.12 890.56)                |
+------------------------------------------------+

下面的示例演示如何将 SRID 指定为 srid 输入实参:

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT TO_GEOMETRY('POINT(1820.12 890.56)', 4326);
Copy
+--------------------------------------------+
| TO_GEOMETRY('POINT(1820.12 890.56)', 4326) |
|--------------------------------------------|
| SRID=4326;POINT(1820.12 890.56)            |
+--------------------------------------------+

以下示例为具有 Z 坐标(以 EWKT 格式描述)的地理空间对象返回 GEOMETRY 对象:

ALTER SESSION SET GEOMETRY_OUTPUT_FORMAT='EWKT';

SELECT TO_GEOMETRY('SRID=32633;POINTZ(389866.35 5819003.03 30)');
Copy
+-----------------------------------------------------------+
| TO_GEOMETRY('SRID=32633;POINTZ(389866.35 5819003.03 30)') |
|-----------------------------------------------------------|
| SRID=32633;POINTZ(389866.35 5819003.03 30)                |
+-----------------------------------------------------------+

有关将 GEOGRAPHY 对象转换为 GEOMETRY 对象的示例,请参阅 在 GEOGRAPHY 和 GEOMETRY 之间转换

语言: 中文