Поделиться через


Функция st_addpoint

Применяется к:check помеченный да флажок 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)