gpt4 book ai didi

google-bigquery - BigQuery ST_SIMPLIFY 返回 GEOMETRYCOLLECTION 而不是 POLYGON

转载 作者:行者123 更新时间:2023-12-02 02:43:31 24 4
gpt4 key购买 nike

我在 BigQuery 函数 ST_SIMPLIFY 中发现一个问题。

我正在查询大几何图形和它们的一些统计数据。如果我需要可视化它们,例如在 Kepler 中这是不可能的,因为 Kepler 不消耗 BigQuery ST_SIMPLIFY 的输出。我分析了 ST_SIMPLIFY 的结果并发现了这一点:

在所有情况下,我使用的输入都是从 OSM 解析的 POLYGON。 enter image description here

当我调用 ST_SIMPLIFY 时,我得到混合几何类型的结果,例如包含 MULTILINESTRING、LINESTRING、POLYGON 的 POLYGON 和 GEOMETRYCOLLECTION。

enter image description here

也许这并不奇怪,但当我尝试可视化这些几何形状时,它们没有意义。特别是 GEOMETRYCOLLECTION 内的 LINESTRING,如下所示 geojson

当我尝试在simplify function in Shapely中使用这些几何形状时我得到了仅包含多边形的有效结果

为什么 BigQuery ST_SIMPLIFY 返回具有 geom 混合类型的 GEOMETRYCOLLECTIONS,而不是简单的 POLYGON 或 MULTIPOLYGON?

要重现此问题,您可以从这些 data 初始化 BQ 表。

最佳答案

简化时,如果较低维度的形状代表具有所需精度的原始形状,BigQuery 可以减少形状的维度。

例如

with data as (
select st_geogfromtext(
'polygon((1 1, 2 1, 2 2, 1.5 2, 1.5 3, 1.499 2, 1 2, 1 1))') g
)
select g, st_simplify(g, 10000) s from data

这里形状顶部的“尖峰”被转换成一条线,我们得到GEOMETRYCOLLECTION(LINESTRING(1.5 2, 1.5 3), POLYGON((1 1, 2 1, 2 2, 1.5 2, 1 2, 1 1)))

使用

with data as (
select st_geogfromtext(
'polygon((1 1, 2 1, 2 2, 1.5 2, 1.5 3, 1.499 2, 1 2, 1 1))') g
)
select st_union(st_dump(st_simplify(g, 10000),2)) s from data

仅当您可以忽略此类尖峰时才提取多边形。

关于google-bigquery - BigQuery ST_SIMPLIFY 返回 GEOMETRYCOLLECTION 而不是 POLYGON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63175451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com