如何在 BigQuery 中使用 ST_UNION

zab*_*bop 2 sql gis geography google-bigquery

我在 BigQuery 中有一个表,名为project.dataset.table. 该表以及其他一些列中有一个ourpolygons列的数据类型为GEOGRAPHY

我正在尝试应用于ST_UNIONourpolygons列,以获得一个多重多边形,即所有多边形的并集。ST_UNIONBigQuery 中的地理函数

使用这个答案,我尝试:

SELECT ST_UNION(ourpolygons) FROM (SELECT ourpolygons FROM `project.dataset.table`) AS multipolig;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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

我也尝试过:

SELECT ST_UNION(ourpolygons) FROM `project.dataset.table` AS multipolig;
Run Code Online (Sandbox Code Playgroud)

给我错误:

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

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

如何从现有表中选择所有多边形并创建它们的并集?

Cyl*_*dby 6

你应该使用ST_UNION_AGG而不是ST_UNION

ST_UNION是在表中水平进行并集:当您有一列包含要转换为单个地理对象的地理对象数组时,或者要将两列地理对象合并为两列时。操作结束时,您的表具有相同的行数。

ST_UNION_AGG是垂直进行联合:您有一列地理对象,您希望将其聚合为一个(可能是每个组..)。在操作结束时,您的行已聚合为仅一行(或数字组,如果您有GROUP BY)