Partilhar via


st_concavehull Função

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

Important

Este recurso está no Public Preview.

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