大查询地理空间数据类型转换
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 .
我有一个名为 geospacial_valid 的列。以上是一行数据示例。字符串与数字混合。如何在大查询中转换为多边形类型(如下所示)。
我以前没见过这种数据类型。
我假设您的列 GeoSPatialValid
中的数据是十六进制或字节。您可以使用 ST_GEOGFROM(). Using the converted value from ST_GEOGFROM()
you can convert it to GeoJson using ST_ASGEOJSON().
作为示例,我以字节为单位使用了这个有效的地理数据:
使用此查询,我将其转换为 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 .