Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:
Databricks Runtime 18 LTS e superior
Observação
O Databricks Runtime 18 é mais recente que o Databricks Runtime 18.0, 18.1 e 18.2. Os recursos que anteriormente teriam sido enviados como uma versão numerada posterior agora são fornecidos como atualizações datadas para o Databricks Runtime 18. Para obter detalhes, consulte Sobre notas de versão unificadas.
Important
Esse recurso está em Visualização Pública.
Retorna um ponto que tem a garantia de estar dentro ou dentro do valor geometry de entrada.
Para a função SQL do Databricks correspondente, consulte a função st_pointonsurface.
Syntax
from pyspark.databricks.sql import functions as dbf
dbf.st_pointonsurface(col=<col>)
Parameters
| Parâmetro | Tipo | Description |
|---|---|---|
col |
pyspark.sql.Column ou str |
Um valor de Geometry. |
Returns
pyspark.sql.Column: uma coluna de valores geometry de ponto 2D, cada uma garantida para se deitar ou dentro da geometria de entrada correspondente. Mais precisamente:
- Se a geometria de entrada estiver vazia, o ponto vazio 2D será retornado.
- Se a geometria de entrada for um ponto não vazio, a projeção 2D do ponto será retornada.
- Se a geometria de entrada for um linestring não vazio, o vértice mediano será retornado.
- Se a geometria de entrada for um polígono não vazio, um ponto no interior do polígono será retornado quando possível; caso contrário, um ponto em seu limite.
- Se a geometria de entrada for um multiponto, o ponto não vazio mais próximo do centro de caixa delimitadora será retornado.
- Se a geometria de entrada for uma multilinha, um ponto na superfície do linestring com o maior comprimento será retornado.
- Se a geometria de entrada for um multipolígono, um ponto na superfície do polígono com a maior área será retornado.
- Se a geometria de entrada for uma coleção de geometria, um ponto na superfície de um dos elementos dimensionais máximos da coleção será retornado.
O SRID da geometria retornada é o mesmo que o da geometria de entrada.
A função retorna None se a entrada for None.
Exemplos
# Returns a point inside a 2D polygon.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('POLYGON((0 0,10 0,10 10,0 10,0 0))',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt'))).alias('result')).collect()
[Row(result='POINT(5 5)')]
# For a polygon with a hole, the result lies in the donut region.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('POLYGON((0 0,30 0,30 30,0 30,0 0),(5 5,25 5,25 25,5 25,5 5))',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt'))).alias('result')).collect()
[Row(result='POINT(3.75 3.75)')]
# For a 3DZ linestring, the median vertex is returned and the Z coordinate is dropped.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('LINESTRING Z (1 2 -1,3 4 -2,5 6 -3)',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt'))).alias('result')).collect()
[Row(result='POINT(3 4)')]
# For a multipolygon, a point on the polygon with the largest area is returned.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((100 100,101 100,101 101,100 101,100 100)))',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt'))).alias('result')).collect()
[Row(result='POINT(5 5)')]
# The SRID of the input geometry is preserved.
from pyspark.databricks.sql import functions as dbf
df = spark.createDataFrame([('POLYGON((0 0,10 0,10 10,0 10,0 0))',)], ['wkt'])
df.select(dbf.st_asewkt(dbf.st_pointonsurface(dbf.st_geomfromtext('wkt', 3857))).alias('result')).collect()
[Row(result='SRID=3857;POINT(5 5)')]