st_concavehull Função

Aplica-se a:check marked yes Databricks SQL check marked yes Databricks Runtime 17.1 e superior

Observação

Esse recurso não está disponível nos armazéns Databricks SQL Classic. Para saber mais sobre os armazéns SQL do Databricks, consulte Tipos de armazém SQL.

Retorna o casco côncavo do valor de entrada GEOMETRY como um GEOMETRY valor usando a razão de comprimento especificada.

Syntax

st_concavehull ( geoExpr, lengthRatioExpr[, allowHolesExpr])

Arguments

  • geoExpr: Um GEOMETRY valor.
  • lengthRatio - Um DOUBLE valor entre 0 e 1, inclusive, que representa a razão de comprimento utilizada para calcular o casco côncavo.
  • allowHoles - Um valor opcional BOOLEAN , indicando se a geometria de saída, se um polígono, pode ter furos. O valor predefinido é false.

Returns

Retorna um GEOMETRY valor que é o casco côncavo do valor de entrada GEOMETRY usando a razão de comprimento especificada. A geometria resultante, se um polígono, pode ter furos se o terceiro argumento for definido como verdadeiro. O valor SRID do valor de saída GEOMETRY é igual ao valor de entrada GEOMETRY . Um erro será retornado se a proporção de comprimento não estiver entre 0 e 1, inclusive.

A razão de comprimento determina um limite com base no intervalo entre as arestas mais curtas e mais longas na triangulação de Delaunay dos pontos de entrada. Arestas maiores que esse parâmetro são removidas da triangulação. Os triângulos restantes definem o casco côncavo. Para geometrias de entrada de área (polígonos ou multipolígonos), o algoritmo utiliza uma triangulação de Delaunay condicionada. O casco côncavo resultante respeita o valor de entrada GEOMETRY e inclui seus polígonos originais.

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))