考虑这个简化的示例:
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地理表示一个点集,而且当集合两个相同的集并集时,您只能得到该集的一个副本。