funktion st_setpoint

Gäller för:check markerad ja Databricks SQL-kontroll markerad ja Databricks Runtime 17.1 och senare

Important

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Anmärkning

Den här funktionen är inte tillgänglig på de klassiska Databricks SQL-lagerhus. Mer information om Databricks SQL-lager finns i SQL-lagertyper.

Anger den n:e punkten för indatalinjerna GEOGRAPHY eller GEOMETRY värdet.

Syntax

st_setpoint ( geo1Expr, indexExpr, geo2Expr )

Arguments

  • geo1Expr: Ett GEOGRAPHY eller GEOMETRY -värde som representerar en linjedragning.
  • indexExpr: Ett INTEGER värde som anger den 1-baserade positionen i den linje där den nya punkten ska anges.
  • geo2Expr: Ett GEOGRAPHY eller GEOMETRY -värde som representerar en punkt.

Returns

Ett värde av typen GEOGRAPHY om både geo1Expr och geo2Expr är av typen GEOGRAPHY, eller ett värde av typen GEOMETRY om båda geo1Expr och geo2Expr är av typen GEOMETRY. Om indexExpr är positivt är det returnerade GEOGRAPHY- eller GEOMETRY-värdet en ny linjesträng vars indexExpr:e punkt (räknat från vänster) är satt till geo2Expr. Om indexExpr är negativt mäts den 1-baserade positionen för den linjesträng där punkten läggs till från höger.

  • Funktionen returnerar NULL om någon av indata är NULL.
  • SRID-värdet för utdatalinjerna är lika med det gemensamma SRID-värdet för indata GEOGRAPHY eller GEOMETRY värden.
  • Dimensionen för utdata GEOGRAPHY eller GEOMETRY linjesträng är samma som geo1Expr. Om geo2Expr innehåller koordinater vars dimension inte finns i geo1Expr motsvarande koordinater anges till 0.

Feltillstånd

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)