如何将一系列经纬度数据转换为最长路径

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

我正在处理地理数据,其中有数百万个带有轨道 ID 的经纬度数据。该数据采用时间序列格式。我想要的是通过轨道 ID 迭代所有经纬度,找到特定经纬度的最长距离并将这些数据存储为起点和终点以获取每个轨道的方向。所以,我想将这些经纬度转换为距离最长的多条路径。

到目前为止,我正在使用 postgres 数据库和 Python,但任何相关的优化解决方案都会有所帮助。

python laravel postgresql time-series
1个回答
0
投票

您可以将坐标传递给

st_makepoint()
,随着时间的推移聚合这些坐标并将其传递给
st_makeline()
。这是一个演示:

create table series_of_locations_as_paths as
select actor_id,
       st_makeline(array_agg(st_makepoint(lat,lon) order by tstz)) as "path_",
       min(tstz) as started,
       max(tstz) as finished
from test
group by actor_id;

select actor_id,
       st_astext("path_"),
       finished-started as duration,
       st_length("path_")/nullif(extract('epoch' from finished-started),0) avg_speed
from series_of_locations_as_paths;
演员_id st_astext 持续时间 平均速度
1 线串(0 0,0 1,1 1,1 2,2 2) 04:00:00 0.0002777777777777778
2 线串(0 0,0 1,0 2,0 3) 03:00:00 0.0002777777777777778
3 线串(0 0) 00:00:00
© www.soinside.com 2019 - 2024. All rights reserved.