ST_GEOMETRYFROMTEXT
更新时间:2025-10-17
描述
将一个 WKT(Well Known Text)转化为对应的内存的几何形式
别名
- ST_GEOMFROMTEXT
语法
SQL
1ST_GEOMETRYFROMTEXT( <wkt>)
参数
| 参数 | 说明 |
|---|---|
<wkt> |
图形的内存形式 |
支持的WKT格式:
POINT- 空间中的单个点LINESTRING- 连接的线段序列POLYGON- 由一个或多个环定义的封闭区域, 要求至少有三个不同的点且首尾闭合MULTIPOLYGON- 多边形的集合, 要求多边形之间仅能存在有限个离散点的接触
:::info 备注 从 PALO 2.1.10 开始支持 MULTIPOLYGON 格式解析 :::
返回值
WKB 的对应的几何存储形式
当输入的 WKT 格式不符合规范或输入为 NULL 时返回 NULL。
举例
SQL
1-- POINT 样例
2SELECT ST_AsText(ST_GeometryFromText("POINT (1 1)"));
Text
1+-----------------------------------------------+
2| ST_AsText(ST_GeometryFromText("POINT (1 1)")) |
3+-----------------------------------------------+
4| POINT (1 1) |
5+-----------------------------------------------+
SQL
1-- POINT 不合法样例(端点过多)
2SELECT ST_AsText(ST_GeometryFromText("POINT (1 1, 2 2)"));
Text
1+----------------------------------------------------+
2| ST_AsText(ST_GeometryFromText("POINT (1 1, 2 2)")) |
3+----------------------------------------------------+
4| NULL |
5+----------------------------------------------------+
SQL
1-- LINESTRING 样例
2SELECT ST_AsText(ST_GeometryFromText("LINESTRING (1 1, 2 2)"));
Text
1+---------------------------------------------------------+
2| st_astext(st_geometryfromtext('LINESTRING (1 1, 2 2)')) |
3+---------------------------------------------------------+
4| LINESTRING (1 1, 2 2) |
5+---------------------------------------------------------+
SQL
1-- LINESTRING 不合法样例(端点过少)
2SELECT ST_AsText(ST_GeometryFromText("LINESTRING (1 1)"));
Text
1+----------------------------------------------------+
2| ST_AsText(ST_GeometryFromText("LINESTRING (1 1)")) |
3+----------------------------------------------------+
4| NULL |
5+----------------------------------------------------+
SQL
1-- POLYGON 样例
2SELECT ST_AsText(ST_GeometryFromText("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))"));
Text
1+-----------------------------------------------------------------------+
2| ST_AsText(ST_GeometryFromText("POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))")) |
3+-----------------------------------------------------------------------+
4| POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0)) |
5+-----------------------------------------------------------------------+
SQL
1-- POLYGON 不合法样例(首尾不闭合)
2SELECT ST_AsText(ST_GeometryFromText("POLYGON ((0 0, 1 0, 1 1, 0 1))"));
Text
1+------------------------------------------------------------------+
2| ST_AsText(ST_GeometryFromText("POLYGON ((0 0, 1 0, 1 1, 0 1))")) |
3+------------------------------------------------------------------+
4| NULL |
5+------------------------------------------------------------------+
SQL
1-- POLYGON 不合法样例(端点过少)
2SELECT ST_AsText(ST_GeometryFromText("POLYGON ((0 0, 1 0, 0 0))"));
Text
1+-------------------------------------------------------------+
2| ST_AsText(ST_GeometryFromText("POLYGON ((0 0, 1 0, 0 0))")) |
3+-------------------------------------------------------------+
4| NULL |
5+-------------------------------------------------------------+
SQL
1-- MULTIPOLYGON 样例
2SELECT ST_AsText(ST_GeometryFromText("MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))"));
Text
1+-----------------------------------------------------------------------------------------------------------+
2| ST_AsText(ST_GeometryFromText("MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))")) |
3+-----------------------------------------------------------------------------------------------------------+
4| MULTIPOLYGON (((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2))) |
5+-----------------------------------------------------------------------------------------------------------+
SQL
1-- MULTIPOLYGON 样例(仅有有限个离散点接触)
2SELECT ST_AsText(ST_GeometryFromText("MULTIPOLYGON (((0 0, 10 0, 10 10, 0 10, 0 0), (4 4, 6 4, 6 6, 4 6, 4 4)), ((4 5, 5 4, 6 5, 5 6, 4 5)))"));
Text
1+------------------------------------------------------------------------------------------------------------------------------------------+
2| ST_AsText(ST_GeometryFromText("MULTIPOLYGON (((0 0, 10 0, 10 10, 0 10, 0 0), (4 4, 6 4, 6 6, 4 6, 4 4)), ((4 5, 5 4, 6 5, 5 6, 4 5)))")) |
3+------------------------------------------------------------------------------------------------------------------------------------------+
4| MULTIPOLYGON (((0 0, 10 0, 10 10, 0 10, 0 0), (4 4, 6 4, 6 6, 4 6, 4 4)), ((4 5, 5 4, 6 5, 5 6, 4 5))) |
5+------------------------------------------------------------------------------------------------------------------------------------------+
SQL
1-- MULTIPOLYGON 不合法样例(存在重叠部分)
2SELECT ST_AsText(ST_GeometryFromText("MULTIPOLYGON (((0 0, 10 0, 10 10, 0 10, 0 0)), ((10 0, 20 0, 20 10, 10 10, 10 0)))"));
Text
1+----------------------------------------------------------------------------------------------------------------------+
2| ST_AsText(ST_GeometryFromText("MULTIPOLYGON (((0 0, 10 0, 10 10, 0 10, 0 0)), ((10 0, 20 0, 20 10, 10 10, 10 0)))")) |
3+----------------------------------------------------------------------------------------------------------------------+
4| NULL |
5+----------------------------------------------------------------------------------------------------------------------+
SQL
1-- 输入 NULL
2SELECT ST_AsText(ST_GeometryFromText(NULL));
Text
1+--------------------------------------+
2| ST_AsText(ST_GeometryFromText(NULL)) |
3+--------------------------------------+
4| NULL |
5+--------------------------------------+
