zab*_*bop 2 sql gis geography google-bigquery
我在 BigQuery 中有一个表,名为project.dataset.table. 该表以及其他一些列中有一个ourpolygons列的数据类型为GEOGRAPHY。
我正在尝试应用于ST_UNION该ourpolygons列,以获得一个多重多边形,即所有多边形的并集。ST_UNION是BigQuery 中的地理函数。
使用这个答案,我尝试:
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]
最终,我将结果放入一个新表中,其中一行:并集。
如何从现有表中选择所有多边形并创建它们的并集?
你应该使用ST_UNION_AGG而不是ST_UNION
ST_UNION是在表中水平进行并集:当您有一列包含要转换为单个地理对象的地理对象数组时,或者要将两列地理对象合并为两列时。操作结束时,您的表具有相同的行数。
ST_UNION_AGG是垂直进行联合:您有一列地理对象,您希望将其聚合为一个(可能是每个组..)。在操作结束时,您的行已聚合为仅一行(或数字组,如果您有GROUP BY)