如何检查postgis中的两个点是否在同一条线上

how to check if two points are on the same line in postgis

我已经提取了所有路口的几何形状,我想找到所有的连接(比如路口一连接到路口二、三、四、五)。我正在考虑通过检查两个交点(点)是否在同一个 LineString 上来实现这一点。有谁知道这是否是一个好方法?是否有任何函数可以调用来检查两点是否在同一条线上?谢谢

如果两个点(或任意数量的点)在多点中 可以使用 ST_Contains(Linestring, Multipoint) 这将 return true

if and only if no points of B lie in the exterior of A, and at least one point of the interior of B lies in the interior of A.

http://postgis.net/docs/manual-2.1/ST_Contains.html

你需要先把你的对收集成多点,这 如果你想测试所有可能的成对集,将是与 n^2 成比例的多个多点,这可能是 令人望而却步。在那种情况下,我会生成一个 table 匹配 指向包含它们的每个线串,然后将其聚合 table 按线串分组。

另请参阅 http://postgis.net/docs/manual-2.1/ST_Relate.html 了解更多信息 对象之间空间关系的一般测试。