【问题标题】:ST_BUFFER in google bigquery?谷歌大查询中的ST_BUFFER?
【发布时间】:2020-06-01 12:53:19
【问题描述】:

要围绕一对 lat+lon 坐标创建一个多边形,我希望能够缓冲 geogpoint:

例如ST_BUFFER(ST_GEOGPOINT(lat, lon), 1000)

这将创建一个半径为 1000m 的圆形多边形。

Bigquery 似乎没有缓冲功能,这似乎是一个非常基本的功能 - 我错过了什么吗?谢谢!

【问题讨论】:

  • 查看 muscat 的回答,但我还想指出,如果您需要 ST_Buffer 进行距离查询,例如 ST_Intersects(ST_Buffer(geo1, radius), geo2),您应该在 BigQuery 中使用 ST_DWithin(geo1, geo2, radius) - 它应该更快、更精确。

标签: sql google-bigquery gis


【解决方案1】:

目前,查询引擎尚不支持ST_BUFFER函数。您可以看到标准 SQL 中所有可用的地理函数here。此外,您可以考虑使用开源库 Turf.JS 中的缓冲区函数来制作缓冲区并在 BigQuery 中使用它:

jslibs.turf.ST_BUFFER(geometry_to_buffer GEOGRAPHY, radius NUMERIC, units STRING, steps NUMERIC)

请关注carto tutorial了解更多使用此功能。

【讨论】:

【解决方案2】:

ST_Buffer 现已推出(预览版) https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#st_buffer

还有 ST_BufferWithTolerance 允许指定近似容差,而不是多边形中近似缓冲区的段数。

【讨论】:

  • 感谢您添加此功能,它是如此重要的地理空间功能。
  • 嗨 Cristian,这里的预览是指发布阶段。请参阅文档中函数名称正下方的注释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-17
  • 1970-01-01
相关资源
最近更新 更多