
我有一个名为geospacial_valid的专栏。上面是一行数据示例。混合了字符串和数字的字符串。如何在大查询中转换为多边形类型(如下所示)。
我以前没有见过这种数据类型。

发布于 2021-10-29 07:17:48
我假设列GeoSPatialValid中的数据是十六进制或字节的。您可以使用ST_GEOGFROM()将字节或十六进制转换为地理数据类型。使用从ST_GEOGFROM()转换的值,您可以使用ST_ASGEOJSON()将其转换为GeoJson。
作为示例,我使用了以字节为单位的有效地理数据:

使用以下查询,我将其转换为GEOGRAPHY和GeoJSON:
SELECT ST_GEOGFROM(GeoValid) as geo,
ST_ASGEOJSON(ST_GEOGFROM(GeoValid)) as geojson
FROM `dataset.test_table`输出:

发布于 2021-10-29 22:55:46
您的字符串似乎(我不确定)是十六进制编码的EWKB字符串。
如果是这种情况,它可能无法工作,因为BigQuery只支持WKB,而不支持EWKB (EWKB添加了SRID规范和潜在的M/Z维度)。
你可以尝试ST_GeogFrom(geo)或ST_GeogFromWkb(From_Hex(geo)),但我认为由于上面的SRID / EWKB问题,这两种方法都会失败。
我会尝试在源系统中将其转换为纯GeoJson或WKT文本,大多数系统支持ST_AsGeoJson函数或类似功能,然后使用ST_GeogFromGeoJson将GeoJson转换为BigQuery中的地理信息。
https://stackoverflow.com/questions/69762222
复制相似问题