4

我只是想知道是否有计划将 S2 地理库的功能添加到 BigQuery 中?

似乎很多人在 BQ 中肯定有 lat-long 数据 - 一些 s2 函数可以到达单元格并返回等肯定会非常有用 - 如果还没有功能请求,很高兴提交功能请求。

我能找到的最佳链接仅供参考:

http://blog.christianperone.com/2015/08/googles-s2-geometry-on-the-sphere-cells-and-hilbert-curve/ https://godoc.org/github.com/golang/geo/ s2 https://docs.google.com/presentation/d/1Hl4KapfAENAOf4gv-pSngKwvS_jwNVHRPZTTDzXXn6Q/view

我确实看到了一些 javascript 库,但不确定它们是否可以在 UDF 中使用

https://www.npmjs.com/package/s2-geometry https://github.com/mapbox/node-s2

我想知道这是不是只能在 UDF 中做的事情?

4

3 回答 3

6

BigQuery 团队有兴趣为地理空间操作添加某种支持 - 因此您可以提供有关您的用例的更多信息 - 将更好地告知规划和优先级。与此同时,S2 库确实在 Google 内部得到了广泛使用,并取得了很大的成功,包括在 BigQuery 中作为 UDF。我不知道您在上面链接的 JavaScript 的公共端口 - 但我相信应该可以在 BigQuery JS UDF 中利用它。

更新:BigQuery GIS 已发货:https ://cloud.google.com/bigquery/docs/gis-intro

于 2016-09-07T14:47:08.443 回答
2

正如 Mosha 所说,可以利用 BigQuery JS UDF。

你可以看一下github项目jslibs或者直接使用下面的代码作为例子。

SELECT `jslibs.s2.ST_S2`(longitude_centroid, latitude_centroid,5)
FROM `bigquery-public-data.worldpop.population_grid_1km`
WHERE last_updated = "2017-01-01"
LIMIT 1000

免责声明:我是这个项目的贡献者之一。

于 2020-03-30T15:04:56.107 回答
2

BigQuery 地理空间函数添加了两个用于处理 S2 单元的原生函数:

S2_CELLIDFROMPOINT(point_geography[, level => cell_level])

S2_COVERINGCELLIDS(
    geography
    [, min_level => cell_level]
    [, max_level => cell_level]
    [, max_cells => max_cells]
    [, buffer => buffer])

https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#s2_cellidfrompoint https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions#s2_coveringcellids

也就是说,ST_*对于大多数地理空间任务,通常应该使用一组常规函数,但 S2 函数可能有助于高级工作负载或与使用 S2 的其他系统的互操作性。

于 2021-09-27T17:26:54.037 回答