提问人:bogdan.rusu 提问时间:11/14/2023 最后编辑:bogdan.rusu 更新时间:11/16/2023 访问量:22
具有 allowInvalid 的 Snowflake to_geometry不起作用
Snowflake to_geometry with allowInvalid is not working
问:
我有一堆有效的几何对象进行了验证,我尝试使用 UDF 将它们组合在一起,然后调用以将结果作为几何体返回。st_isvalid
to_geometry
法典:
select to_geometry(st_asgeojson(combine_geoms(ARRAY_AGG(st_asgeojson(geom_simplified)))), TRUE) as geom_1 from tbl where condition;
UDF相关代码(在很多其他地方使用):
mapping(unary_union([shape(i) for i in geoms]))
同一几何图形有 2 个版本,均有效:原始版本和简化版本(由于 16MB 大小限制,能够存储在单元格中)。st_simplify
geometry
使用原始版本,我可以将它们组合在一起,但我不能将它们全部组合在一起,因为点太多了 - 16mb 限制。
使用简化版本,我得到:.Geography validation failed: Loop 0: Edge X crosses edge Y
我以为使用标志会忽略这种交叉点。allowInvalid
to_geometry
值得一提的是,我之前在将几何体作为 varchar 从另一个数据库加载到 SF 作为几何体时成功使用了该标志。很多无效的,但最终可以存储在 SF 中。
这是正确的行为,还是有人可以告诉我我还能尝试什么来避免该交叉问题?
提前致谢!
修复:
将函数更改为 return 而不是 UDF 并仅从 UDF 返回,而不是包含在 .
然后,在 SF 中,我使用 with the flag,它按预期工作。STRING
GEOGRAPHY
unary_union([shape(i) for i in geoms])
mapping
to_geometry
allowInvalid
答: 暂无答案
评论
sp_simplify
allowInvalid
to_geometry
sp_simplify
st_simplify
geom_simplified
geom
allowInvalid
Geography validation failed
to_geometry