我正在使用Java和Postgres创建一个巴士到达预测系统。每条巴士都有固定路线,因此我们将整条行车路线存储为postgres中的LineString。
有3个公共汽车停止,并且每个公共汽车站lat lon也在路线表中存储为LineString。 还有一个表有停工名称和lat lon详细信息。
stoppage_details表
Stoppage 1 - lat1,lon1
Stoppage 2 - lat2,lon2
Stoppage 3 - lat3,lon3
我正在寻找Postgres函数来解决下面的问题。
答案 0 :(得分:0)
如果p1到p8是srid中的一个线串几何:4326(长/纬),那么你可以用st_length(line :: geography)得到它的长度(米)。
稍微复杂一点,但有各种方法。例如,您可以使用线性参考功能将GPS点投影到线串上,并获得百分比,其中0是开始,1.0是结束。如果您采取每个停工点并以相同的方式获得其百分比(也可能将其存储在您的表中),那么找到小于GPS百分比的停止点,并且大于GPS百分比将为您提供相邻的停止点。线性参考功能使您能够根据线串的开始和停止百分比提取子字符串,并且可以获得GPS点之前和之后距离的长度。