Freigeben über


st_setpoint-Funktion

Gilt für:check marked yes Databricks SQL check marked yes Databricks Runtime 17.1 and above

Important

Dieses Feature befindet sich in der Public Preview.

Hinweis

Dieses Feature ist in Databricks SQL Classic Warehouses nicht verfügbar. Weitere Informationen zu Databricks SQL Warehouses finden Sie unter SQL Warehouse-Typen.

Legt den n-ten Punkt des Eingabe-Liniensegments GEOGRAPHY oder GEOMETRY-Wert fest.

Syntax

st_setpoint ( geo1Expr, indexExpr, geo2Expr )

Arguments

  • geo1Expr: Ein GEOGRAPHY- oder GEOMETRY-Wert, der einen Linienzug darstellt.
  • indexExpr: Ein INTEGER Wert, der die 1-basierte Position in der Linienzeichenfolge angibt, an der der neue Punkt festgelegt werden soll.
  • geo2Expr: Ein GEOGRAPHY oder GEOMETRY ein Wert, der einen Punkt darstellt.

Returns

Ein Wert vom Typ GEOGRAPHY , wenn beide geo1Expr und geo2Expr vom Typ GEOGRAPHYsind, oder ein Wert des Typs GEOMETRY , wenn beide geo1Expr und geo2Expr vom Typ GEOMETRYsind. Wenn indexExpr positiv ist, handelt es sich bei dem zurückgegebenen GEOGRAPHY oder GEOMETRY-Wert um einen neuen Linienzug, dessen indexExpr-ter Punkt (von links gezählt) auf geo2Expr gesetzt ist. Wenn indexExpr negativ ist, wird die Position des Linienstrings basierend auf 1, an der der Punkt hinzugefügt wird, von rechts gemessen.

  • Die Funktion gibt zurück NULL , wenn eine der Eingaben lautet NULL.
  • Der SRID-Wert des Ausgabe-Linestrings entspricht dem gemeinsamen SRID-Wert der Eingabewerte GEOGRAPHY oder GEOMETRY.
  • Die Dimension der Ausgabe GEOGRAPHY - oder GEOMETRY Linienzeichenfolge ist identisch mit der der von geo1Expr. If geo2Expr enthält Koordinaten, deren Dimension in der Datenbank nicht vorhanden ist. geo1Expr werden die entsprechenden Koordinaten auf 0 aktiviert.

Fehlerbedingungen

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)