大查询地理空间数据类型转换

big query geospatial data type conversion

我有一个名为 geospacial_valid 的列。以上是一行数据示例。字符串与数字混合。如何在大查询中转换为多边形类型(如下所示)。

我以前没见过这种数据类型。

我假设您的列 GeoSPatialValid 中的数据是十六进制或字节。您可以使用 ST_GEOGFROM(). Using the converted value from ST_GEOGFROM() you can convert it to GeoJson using ST_ASGEOJSON().

将字节或十六进制转换为 GEOGRAPHY 数据类型

作为示例,我以字节为单位使用了这个有效的地理数据:

使用此查询,我将其转换为 GEOGRAPHY 和 GeoJSON:

SELECT ST_GEOGFROM(GeoValid) as geo,
       ST_ASGEOJSON(ST_GEOGFROM(GeoValid)) as geojson 
FROM `dataset.test_table`

输出:

您的字符串似乎(我不确定)是十六进制编码的 EWKB 字符串。

如果是这种情况,它可能不起作用,因为 BigQuery 仅支持 WKB 但不支持 EWKB(EWKB 添加了 SRID 规范并可能 M/Z 维度)。

您可以尝试 ST_GeogFrom(geo),或 ST_GeogFromWkb(From_Hex(geo)),但我认为这些会因上述 SRID/EWKB 问题而失败。

我会尝试在源系统中将其转换为纯 GeoJson 或 WKT 文本,大多数系统都支持 ST_AsGeoJson 函数或类似函数,然后使用 ST_GeogFromGeoJson 在 BigQuery 中将 GeoJson 转换为 Geography .