Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Применяется к:
Databricks SQL
Databricks Runtime 17.1 и более поздних версий
Important
Эта функция доступна в общедоступной предварительной версии.
Замечание
Эта функция недоступна в классических хранилищах Databricks SQL. Дополнительные сведения о хранилищах SQL Databricks см. в разделе "Типы хранилища SQL".
Добавляет новую точку на n-ую позицию в входной линейной строке GEOGRAPHY или в значении GEOMETRY.
Syntax
st_addpoint ( geo1Expr, geo2Expr[, indexExpr] )
Arguments
-
geo1Expr: значениеGEOGRAPHYилиGEOMETRY, представляющее линейную строку. -
geo2Expr: значениеGEOGRAPHYилиGEOMETRY, представляющее собой точку. -
indexExpr: необязательноеINTEGERзначение, указывающее 1-е положение в строке, в которой должна быть добавлена новая точка. По умолчанию используется значение 1.
Returns
Значение типа GEOGRAPHY, если и geo1Expr, и geo2Expr имеют тип GEOGRAPHY, или значение типа GEOMETRY, если и geo1Expr, и geo2Expr имеют тип GEOMETRY.
Если indexExpr положительное, возвращаемое значение GEOGRAPHY или GEOMETRY является новой строкой линии, у которой indexExpr-я точка (отсчитывается geo2Expr слева) является geo2Expr.
Если indexExpr отрицательно, то позиция линии, начинающаяся с 1, в которой добавляется точка, измеряется справа.
- Функция возвращает
NULL, если какие-либо из входных данныхNULL. - Значение SRID выходной строки равно общему значению SRID входных
GEOGRAPHYилиGEOMETRYзначений. - Размер выходного
GEOGRAPHYилиGEOMETRYлинейного объекта такой же, как и уgeo1Expr. Еслиgeo2Exprсодержит координаты, измерение которых не существует вgeo1Expr, соответствующие координаты устанавливаются в значение 0.
Условия ошибок
- Если
geo1Exprимеет типGEOGRAPHY, аgeo2Exprимеет типGEOMETRYили наоборот, функция возвращает DATATYPE_MISMATCH. - Если значения SRID и
geo1Exprgeo2Exprотличаются, функция возвращает ST_DIFFERENT_SRID_VALUES. - Функция возвращает ST_INVALID_ARGUMENT. INVALID_TYPE в любом из следующих случаев:
- Значение
geo1Exprне является строкой. - Значение
geo2Exprне является точкой.
- Значение
- Функция возвращает ST_INVALID_ARGUMENT. EMPTY_LINESTRING , если значение
geo1Exprявляется пустой строкой. - Функция возвращает ST_INVALID_ARGUMENT. EMPTY_POINT , если значение
geo2Exprявляется пустой точкой. - Если абсолютное значение значения
indexExprравно 0 или больше числа точек в строке плюс один, функция возвращает ST_INVALID_ARGUMENT. INVALID_INDEX_VALUE.
Examples
-- We do not specify a position; the point is appended at the end (right) of the linestring.
> SELECT st_asewkt(st_addpoint(st_geomfromtext('LINESTRING(1 2,3 4)', 4326), st_geomfromtext('POINT(7 8)', 4326)));
SRID=4326;LINESTRING(1 2,3 4,7 8)
-- A positive index indicates the position. We add the point at that position in the linestring.
> SELECT st_astext(st_addpoint(st_geomfromtext('LINESTRING(1 2,3 4)'), st_geomfromtext('POINT(7 8)'), 3));
LINESTRING(1 2,3 4,7 8)
-- The position is specified as a negative index. The point is added at that position counting from the right.
-- The point is missing a Z coordinate. This is set to 0 when the point is added in the linestring.
> SELECT st_asewkt(st_addpoint(st_geogfromtext('LINESTRING ZM (1 2 3 4,5 6 7 8)'), st_geogfromtext('POINT M (0 9 99)'), -1));
SRID=4326;LINESTRING ZM (1 2 3 4,5 6 7 8,0 9 0 99)