Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
funktion
Gäller för:
Databricks
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.
Lägger till en ny punkt till den n:e positionen i indatalinjesträngen GEOGRAPHY eller GEOMETRY värde.
Syntax
st_addpoint ( geo1Expr, geo2Expr[, indexExpr] )
Arguments
-
geo1Expr: EttGEOGRAPHYellerGEOMETRY-värde som representerar en linjedragning. -
geo2Expr: EttGEOGRAPHYellerGEOMETRY-värde som representerar en punkt. -
indexExpr: Ett valfrittINTEGERvärde som anger en 1-baserad position i den linje där den nya punkten ska läggas till. Standardvärdet är -1.
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
NULLom någon av indata ärNULL. - SRID-värdet för utdatalinjerna är lika med det gemensamma SRID-värdet för indata
GEOGRAPHYellerGEOMETRYvärden. - Dimensionen för utdata
GEOGRAPHYellerGEOMETRYlinjesträng är samma somgeo1Expr. Omgeo2Exprinnehåller koordinater vars dimension inte finns igeo1Exprmotsvarande koordinater anges till 0.
Feltillstånd
- Om
geo1Exprär av typenGEOGRAPHYochgeo2Exprär av typenGEOMETRY, eller tvärtom, returnerar funktionen DATATYPE_MISMATCH. - Om SRID-värdena för
geo1Exprochgeo2Exprskiljer sig åt returnerar funktionen ST_DIFFERENT_SRID_VALUES. - Funktionen returnerar ST_INVALID_ARGUMENT. INVALID_TYPE i något av följande fall:
- Värdet för
geo1Exprär inte en linjedragning. - Värdet för
geo2Exprär inte en punkt.
- Värdet för
- Funktionen returnerar ST_INVALID_ARGUMENT. EMPTY_LINESTRING om värdet
geo1Exprför är en tom linjedragning. - Funktionen returnerar ST_INVALID_ARGUMENT. EMPTY_POINT om värdet
geo2Exprför är en tom punkt. - Om det absoluta värdet för värdet
indexExprför är 0 eller större än antalet punkter i linjedragningen plus en returnerar funktionen 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)