st_pointonsurface Função

Aplica-se a:sim Databricks Runtime 18.3 e superiores

Importante

Este recurso está no Public Preview.

Devolve um ponto que está garantido a estar sobre ou dentro do valor de entrada GEOMETRY .

Syntax

st_pointonsurface ( geoExpr )

Arguments

  • geoExpr: Um GEOMETRY valor.

Devoluções

Um valor de pontos GEOMETRY 2D que garante estar sobre ou dentro do valor de entrada GEOMETRY . Mais precisamente:

  • Se o valor de entrada GEOMETRY estiver vazio, o ponto vazio 2D será retornado.
  • Se o valor de entrada GEOMETRY for um ponto não vazio, a projeção 2D do ponto é devolvida.
  • Se o valor de entrada GEOMETRY for uma cadeia de linhas não vazia, o vértice mediano é devolvido.
  • Se o valor de entrada GEOMETRY for um polígono não vazio, um ponto no interior do polígono é devolvido quando possível; caso contrário, um ponto na sua fronteira.
  • Se o valor de entrada GEOMETRY for um multiponto, o ponto não vazio mais próximo do centro da caixa delimitadora é devolvido.
  • Se o valor de entrada GEOMETRY for uma cadeia multilinha, um ponto na superfície da cadeia com o maior comprimento é retornado.
  • Se o valor de entrada GEOMETRY for um multipolígono, um ponto na superfície do polígono com a maior área é devolvido.
  • Se o valor de entrada GEOMETRY for uma coleção de geometria, é devolvido um ponto na superfície de um dos elementos de dimensão máxima da coleção.

O valor SRID do valor de saída GEOMETRY é o mesmo que o valor de entrada.

Exemplos

-- Example taking a 2D polygon.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('POLYGON((0 0,10 0,10 10,0 10,0 0))')));
  POINT(5 5)

-- Example taking a 2D polygon with a hole: the result lies in the donut region.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('POLYGON((0 0,30 0,30 30,0 30,0 0),(5 5,25 5,25 25,5 25,5 5))')));
  POINT(3.75 3.75)

-- Example taking a 3DZ linestring: the median vertex is returned and the Z coordinate is dropped.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('LINESTRING Z (1 2 -1,3 4 -2,5 6 -3)')));
  POINT(3 4)

-- Example taking a multipolygon: a point on the polygon with the largest area is returned.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((100 100,101 100,101 101,100 101,100 100)))')));
  POINT(5 5)

-- Example showing that the SRID is preserved.
> SELECT st_asewkt(st_pointonsurface(st_geomfromtext('POLYGON((0 0,10 0,10 10,0 10,0 0))', 3857)));
  SRID=3857;POINT(5 5)

-- Example taking a NULL input.
> SELECT st_pointonsurface(NULL);
  NULL