使用 gps 坐标查找到下一个顶点的距离
Find distance using gps coordinate to next vertex
我正在使用 Java 创建公交车到达预测系统,并且 Postgres.There 是每辆公交车的固定路线,因此我们将整个行驶路线存储为 Postgres 中的 LineString。
有3个公交车站,每个公交车站的经纬度也存储为路线table中的LineString。
还有一个 table 有停靠站名称和经纬度详细信息。
stoppage_details Table
Stoppage 1 - lat1,lon1
Stoppage 2 - lat2,lon2
Stoppage 3 - lat3,lon3
我正在寻找 Postgres 函数来解决以下问题。
- 如何使用 LineString(Start
点经纬度和终点经纬度)。
- 每辆公交车都安装了GPS系统,每时每刻发送数据
30 sec.I 正在使用 ST_ClosestPoint 函数查找最近的顶点
来自线串。我怎样才能找到顶点和下一个之间的距离
和之前使用 LineString 的停止。
- 或者有人可以建议任何其他方法来解决上述问题。
如果 p1 到 p8 是 srid:4326 (long/lat) 中的线串几何,那么您可以使用 st_length(line::geography) 获取它的长度米.
有点复杂,但有多种方法可以解决。例如,您可以使用线性参考函数将您的 GPS 点投影到线串上,并获得沿线的百分比,其中 0 是起点,1.0 是终点。如果您采用每个停止点并以相同的方式获得其百分比(也许也将其存储在您的 table 中),则找到小于 GPS 百分比和大于 GPS 百分比的停止点将为您提供相邻的停止点。线性参考函数使您能够根据线串的开始和停止百分比提取子串,并且您可以根据 GPS 点前后的距离获得每个子串的长度。
我正在使用 Java 创建公交车到达预测系统,并且 Postgres.There 是每辆公交车的固定路线,因此我们将整个行驶路线存储为 Postgres 中的 LineString。
有3个公交车站,每个公交车站的经纬度也存储为路线table中的LineString。 还有一个 table 有停靠站名称和经纬度详细信息。
stoppage_details Table
Stoppage 1 - lat1,lon1
Stoppage 2 - lat2,lon2
Stoppage 3 - lat3,lon3
我正在寻找 Postgres 函数来解决以下问题。
- 如何使用 LineString(Start 点经纬度和终点经纬度)。
- 每辆公交车都安装了GPS系统,每时每刻发送数据 30 sec.I 正在使用 ST_ClosestPoint 函数查找最近的顶点 来自线串。我怎样才能找到顶点和下一个之间的距离 和之前使用 LineString 的停止。
- 或者有人可以建议任何其他方法来解决上述问题。
如果 p1 到 p8 是 srid:4326 (long/lat) 中的线串几何,那么您可以使用 st_length(line::geography) 获取它的长度米.
有点复杂,但有多种方法可以解决。例如,您可以使用线性参考函数将您的 GPS 点投影到线串上,并获得沿线的百分比,其中 0 是起点,1.0 是终点。如果您采用每个停止点并以相同的方式获得其百分比(也许也将其存储在您的 table 中),则找到小于 GPS 百分比和大于 GPS 百分比的停止点将为您提供相邻的停止点。线性参考函数使您能够根据线串的开始和停止百分比提取子串,并且您可以根据 GPS 点前后的距离获得每个子串的长度。