Teilen über


st_concavehull-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.

Gibt den Konkavrumpf des Eingabewerts GEOMETRY als GEOMETRY Wert zurück, der das angegebene Längenverhältnis verwendet.

Syntax

st_concavehull ( geoExpr, lengthRatioExpr[, allowHolesExpr])

Arguments

  • geoExpr: Ein GEOMETRY Wert.
  • lengthRatio - Ein DOUBLE Wert zwischen 0 und 1einschließlich, der das Längenverhältnis darstellt, das zum Berechnen des Konkadenrumpfs verwendet wird.
  • allowHoles - Ein optionaler BOOLEAN Wert, der angibt, ob die Ausgabegeometrie, wenn ein Polygon, Löcher enthalten darf. Der Standardwert ist "false".

Returns

Gibt einen GEOMETRY Wert zurück, der der konkaave Rumpf des Eingabewerts GEOMETRY mithilfe des angegebenen Längenverhältnisses ist. Eine resultierende Geometrie kann Löcher enthalten, wenn es sich um ein Polygon handelt und das dritte Argument auf "true" gesetzt ist. Der SRID-Wert des Ausgabewerts GEOMETRY entspricht dem des Eingabewerts GEOMETRY . Wenn das Längenverhältnis nicht zwischen 0 und 1 (einschließlich) liegt, wird ein Fehler zurückgegeben.

Das Längenverhältnis bestimmt einen Schwellenwert basierend auf dem Bereich zwischen den kürzesten und längsten Rändern in der Delaunay-Triangulation der Eingabepunkte. Ränder, die länger als dieser Schwellenwert sind, werden aus der Triangulation entfernt. Die verbleibenden Dreiecke definieren die konkave Hülle. Für areale Eingabegeometrien (Polygone oder Multipolygons) verwendet der Algorithmus eine eingeschränkte Delaunay-Triangulation. Der resultierende Konkavrumpf respektiert den Eingabewert GEOMETRY und enthält seine ursprünglichen Polygone.

Examples

> SELECT st_astext(st_concavehull(st_geomfromtext('MULTIPOINT(0 0,10 0,10 10,0 10,1 1,1 5,1 9,5 1,9 9,9 1,9 5,5 9)'), 1));
  POLYGON((0 0,0 10,10 10,10 0,0 0))

> SELECT st_astext(st_concavehull(st_geomfromtext('MULTIPOINT(0 0,10 0,10 10,0 10,1 1,1 5,1 9,5 1,9 9,9 1,9 5,5 9)'), 0.8));
  POLYGON((0 0,1 5,0 10,5 9,10 10,9 5,10 0,5 1,0 0))