ST_MAKELINE即使不连续也丢弃重复的点

问题描述 投票:0回答:1

考虑这个简化的示例:

SELECT ST_MAKELINE([
  ST_GEOGPOINT(5, 51),
  ST_GEOGPOINT(5, 52),
  ST_GEOGPOINT(5, 51)
])

我希望这会构成一条包含三个点的线,该线本身会加倍。相反,我得到的是:

LINESTRING(5 51, 5 52)

[BigQuery似乎正在丢弃重复的点,即使它们不是连续的。这弄乱了我的距离计算,其中涉及到所得线串的ST_LENGTH

作为一种解决方法,我正在构造一系列的线串,每个连续的点都是两个,然后求和它们的距离。但这很尴尬和冗长。

有没有一种方法可以创建线串而不删除重复的点?

google-bigquery gis
1个回答
0
投票

发生什么情况是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地理表示一个点集,而且当集合两个相同的集并集时,您只能得到该集的一个副本。

© www.soinside.com 2019 - 2024. All rights reserved.