Compartilhar via


st_concavehull Função

Aplica-se a:check marked yes Databricks SQL check marked yes Databricks Runtime 17.1 and above

Important

Esse recurso está em Visualização Pública.

Observação

Esse recurso não está disponível em databricks SQL Classic warehouses. Para saber mais sobre os sql warehouses do Databricks, consulte os tipos de sql warehouse.

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

Syntax

st_concavehull ( geoExpr, lengthRatioExpr[, allowHolesExpr])

Arguments

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

Returns

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

A razão de comprimento determina um limite com base no intervalo entre as bordas mais curtas e mais longas na Triangulação de Delaunay dos pontos de entrada. Bordas maiores que esse limite são removidas da triangulação. Os triângulos restantes definem o casco côncavo. Para geometrias de entrada areais (polígonos ou multipolígonos), o algoritmo usa uma triangulação Delaunay restrita. 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))