适用于: Databricks Runtime 17.1 及更高版本
Important
此功能目前以公共预览版提供。
设置输入线串 GEOGRAPHY
或 GEOMETRY
的第 n 个点。
Syntax
st_setpoint ( geo1Expr, indexExpr, geo2Expr )
Arguments
-
geo1Expr
:一个GEOGRAPHY
或者GEOMETRY
值,用以表示线字符串。 -
indexExpr
:一个INTEGER
值,该值指示应设置新点的位置,该位置在行字符串中以1为起点。 -
geo2Expr
:表示GEOGRAPHY
GEOMETRY
点的值。
Returns
如果GEOGRAPHY
和geo1Expr
都是geo2Expr
类型,则返回GEOGRAPHY
类型的值;如果GEOMETRY
和geo1Expr
都是geo2Expr
类型,则返回GEOMETRY
类型的值。
如果 indexExpr
为正值,则返回 GEOGRAPHY
或 GEOMETRY
值为新的线字符串,其 indexExpr
第一个点(从左计数)设置为 geo2Expr
。
如果 indexExpr
为负数,则从右侧测量从 1 开始的添加点的线串位置。
- 如果任何输入为
NULL
,该函数将返回NULL
。 - 输出行字符串的 SRID 值等于输入
GEOGRAPHY
或GEOMETRY
值的通用 SRID 值。 - 输出
GEOGRAPHY
或GEOMETRY
线字符串的维度与该geo1Expr
维度相同。 如果geo2Expr
中包含了一些坐标,而这些坐标的维度在geo1Expr
中不存在,那么对应的这些坐标将被设置为0。
Error conditions
- 如果
geo1Expr
的类型为GEOGRAPHY
,且geo2Expr
的类型为GEOMETRY
,或者反过来,那么函数将返回 DATATYPE_MISMATCH。 - 如果 SRID 值
geo1Expr
不同geo2Expr
,函数将返回 ST_DIFFERENT_SRID_VALUES。 - 在以下任一情况下,该函数将返回 ST_INVALID_ARGUMENT :
- 值
geo1Expr
不是线字符串,也不是空线字符串。 -
geo2Expr
的值不是一个点。 - 值为
geo2Expr
的元素是一个空点。
- 值
- 如果
indexExpr
的绝对值为 0 或大于线串中的点数量,则函数返回 ST_INVALID_INDEX_VALUE
Examples
-- We set the first point of the linestring counting from the left.
> SELECT st_astext(st_setpoint(st_geomfromtext('LINESTRING(1 2,3 4)'), 1, st_geomfromtext('POINT(7 8)')))
LINESTRING(7 8,3 4)
-- We set the first point of the linestring counting from the right.
-- The point is missing a Z coordinate. This is set to 0 when we update the linestring.
> SELECT st_asewkt(st_setpoint(st_geogfromtext('LINESTRING ZM (1 2 3 4,5 6 7 8)'), -1, st_geogfromtext('POINT M (0 9 99)')))
SRID=4326;LINESTRING ZM (1 2 3 4,0 9 0 99)