时空函数中的构造函数可以将WKT字符串构建为Geometry对象,也可以将给定的Geometry对象转换为其他格式。本文介绍Lindorm流引擎支持的构造函数及其使用方法。
函数列表
函数 | 说明 |
返回与指定WKT字符串对应的Geometry对象。 | |
返回与指定MultiPoint对象对应的LineString对象。 | |
构建一个Point对象。 | |
将给定的Point或LineString等类型的Geometry对象,构造为LineString对象。 |
ST_GeomFromText
返回与指定WKT字符串对应的Geometry对象。
语法
geometry ST_GeomFromText(string wkt)
参数说明
参数 | 描述 |
wkt | 指定WKT字符串。 |
Geometry对象支持Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon、GeometryCollection类型。
如果WKT格式中带有SRID,不支持WKT带有空间参考系信息,SRID(默认为4326)可以单独建列存储,仅作为标识。
可以创建任意数据类型的EMPTY。
示例
示例1:Geometry对象为Point类型。
SELECT ST_GeomFromText('POINT(1 1)');
返回结果:
+----------------------------------------------------+ | "ST_GeomFromText"('POINT(1 1)') | +----------------------------------------------------+ | 0020000001000010E63FF00000000000003FF0000000000000 | +----------------------------------------------------+
示例2:Geometry对象为Polygon类型。
SELECT ST_GeomFromText('POLYGON (( 1 1, 1 2, 2 2, 2 1, 1 1))') AS poly;
返回结果:
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | poly | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | 0020000003000010E600000001000000053FF00000000000003FF00000000000003FF000000000000040000000000000004000000000000000400000000000000040000000000000003FF00000000000003FF00000000000003FF0000000000000 | +----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
示例3:Geometry对象为EMPTY。
SELECT ST_GeomFromText('POLYGON EMPTY');
返回结果:
+-------------------------------------+ | "ST_GeomFromText"('POLYGON EMPTY') | +-------------------------------------+ | 0020000003000010E600000000 | +-------------------------------------+
ST_LineFromMultiPoint
返回与指定MultiPoint对象对应的LineString对象。
语法
geometry ST_LineFromMultiPoint(geometry aMultiPoint)
参数说明
参数 | 描述 |
aMultiPoint | 指定MultiPoint对象,可以使用 |
示例
SELECT ST_AsText(ST_LineFromMultiPoint(ST_Collect(ST_MakePoint(1,2),ST_MakePoint(3,4),ST_MakePoint(5,6)))) AS astext;
返回结果:
+-------------------------+
| astext |
+-------------------------+
| LINESTRING(1 2,3 4,5 6) |
+-------------------------+
ST_MakePoint
构建一个Point对象。
语法
geometry ST_MakePoint(double x, double y)
参数说明
参数 | 描述 |
x | 经度x值。DOUBLE类型,如果输入的数据类型为INTEGER或者LONG会自动转换为DOUBLE类型。 |
y | 纬度y值。DOUBLE类型,如果输入的数据类型为INTEGER或者LONG会自动转换为DOUBLE类型。 |
不支持设定空间参考系和三维对象。
示例
SELECT ST_AsText(ST_MakePoint(1, 2));
返回结果:
+------------------------------------+
| "ST_AsText"("ST_MakePoint"(1, 2)) |
+------------------------------------+
| POINT (1 2) |
+------------------------------------+
ST_MakeLine
将给定的Point或LineString等类型的Geometry对象,构造为LineString对象。
语法
geometry ST_MakeLine(geometry geomA, geometry geomB);
geometry ST_MakeLine(geometry... geoms)
参数说明
参数 | 描述 |
geomA | 指定的第一个Geometry对象。 |
geomB | 指定的第二个Geometry对象。 |
geoms | Geometry对象集合。 |
仅支持Point和LineString类型的输入。
当给定多个LineString类型的Geometry对象时,构造过程将删除重复的节点。实际实现请参见示例三。
当给定的Geometry对象为Point类型时,构造过程中不会删除重复的节点。
示例
示例一:Geometry对象为Point类型。
SELECT ST_AsText(ST_MakeLine(ST_MakePoint(1,2), ST_MakePoint(3,4)));
返回结果:
LINESTRING(1 2, 3 4)
示例二:Geometry对象为Point类型,构造多个LineString对象。
SELECT ST_AsText(ST_MakeLine(ST_MakePoint(1,2), ST_MakePoint(3,4), ST_MakePoint(5,6)));
返回结果:
LINESTRING(1 2, 3 4, 5 6)
示例三:Geometry对象为LineString类型。
SELECT ST_AsText(ST_MakeLine(ST_GeomFromText('LINESTRING(0 0, 1 1)'), ST_GeomFromText('LINESTRING(1 1, 2 2, 3 3)')));
返回结果:
LINESTRING(0 0, 1 1, 2 2, 3 3)