考虑这个简化的例子:
SELECT ST_MAKELINE([
ST_GEOGPOINT(5, 51),
ST_GEOGPOINT(5, 52),
ST_GEOGPOINT(5, 51)
])
我希望这能构建一条包含三个点的线,并在自身上加倍。相反,我得到的是:
LINESTRING(5 51, 5 52)
BigQuery 似乎正在丢弃重复的点,即使它们不连续。这搞乱了我的距离计算,其中涉及到ST_LENGTH
生成的线串。
作为解决方法,我正在构造一系列线串,每个线串是两个连续点,然后将这些线串的距离相加。但它很尴尬而且冗长。
有没有办法在不删除重复点的情况下创建线串?
发生的情况是 BigQuery GIS 丢弃重复的重叠边(而不是顶点)。
例如。你可以有行字符串 A、B、C、A,如果 A、B 和 C 不在同一行上,则不会丢弃任何内容,A 在该行中出现两次。但如果两条边完全重叠 - 重叠部分将被丢弃。
另一方面,这里没有重复的顶点,但第二条边与第一条边完全重叠,因此被忽略:
SELECT ST_MAKELINE([
ST_GEOGPOINT(5, 51),
ST_GEOGPOINT(5, 53),
ST_GEOGPOINT(5, 52)
])
LINESTRING(5 51, 5 52, 5 53)
目前无法避免这种行为 - BigQuery Geography 表示一个点集,并且随着集合的发展,当您合并两个相同的集合时,您只会得到该集合的一个副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)