如何在 BigQuery 中使用 ST_UNION

How to use ST_UNION in BigQuery

我在 BigQuery 中有一个 table,名为 project.dataset.table。此 table 与其他一些列有一个 ourpolygons 列,数据类型为 GEOGRAPHY.

我正在尝试将 ST_UNION 应用到 ourpolygons 列,以获得多多边形,即所有多边形的并集。 ST_UNIONGeography function in BigQuery.

使用 this answer,我试过:

SELECT ST_UNION(ourpolygons) FROM (SELECT ourpolygons FROM `project.dataset.table`) AS multipolig;

我收到错误:

No matching signature for function ST_UNION for argument types: GEOGRAPHY. Supported signatures: ST_UNION(GEOGRAPHY, GEOGRAPHY); ST_UNION(ARRAY<GEOGRAPHY>) at [1:8]

我也试过:

SELECT ST_UNION(ourpolygons) FROM `project.dataset.table` AS multipolig;

报错:

No matching signature for function ST_UNION for argument types: GEOGRAPHY. Supported signatures: ST_UNION(GEOGRAPHY, GEOGRAPHY); ST_UNION(ARRAY<GEOGRAPHY>) at [1:8]

最终,我会将结果放入一个新的 table 中,其中一行:并集。

如何 select 来自现有 table 的所有多边形并创建它们的联合?

您应该使用 ST_UNION_AGG 而不是 ST_UNION

ST_UNION 是在你的 table 中水平地 建立联合:当你有一个包含要转换的地理对象数组的列时成一个或两列要合并为两个的地理对象。 在操作结束时,您的 table 具有相同的行数。

ST_UNION_AGG 是做一个联合垂直:你有一列地理对象,你想聚合成一个(也许每组..) 在操作结束时,您的行已聚合为仅一行(或组数,如果您有 GROUP BY