我正在尝试写我的第一时间邮寄查询
我的表格如下所示
time (with time time zone), track_id, geography(geography(Point, 4326))
我正在尝试计算某个时间范围内特定轨道上的距离。 例如
select track_id, distance (in meters) from mytable where time between x and y group by track_id
我在线上看到了几篇文章,但是这些都与地理无关,或者没有获得多个地理位置
CREATE TABLE data (
time TIMESTAMPTZ NOT NULL,
track_id VARCHAR NOT NULL
geography geography(point,4326)
);
样本数据
"2017-04-05 09:10:12-04";"1";"0101000020E6100000689B768C864A5540E00CA3C5BE953940"
"2017-04-06 15:23:10-04";"1";"0101000020E6100000358584DED14B55408F49905BDD953940"
"2017-05-12 05:30:03-04";"1";"0101000020E610000008420D3A7C50554060BE068E15903940"
"2017-05-20 01:19:24-04";"1";"0101000020E61000001D5C959F2F805540EEDBFFB6DDC23940"
"2017-05-20 01:17:52-04";"1";"0101000020E6100000E3F50599897F55406523C621D1C03940"
因此,这是ID为1的车辆的GPS数据。我需要计算出日期为2017-05-20的车辆行驶的总距离(以米为单位)。可能还有其他具有不同ID的视图。
参考例如https://gis.stackexchange.com/questions/268776/finding-total-distance-of-path-along-points-in-postgis 但这是采用几何学而不是地理学
答案 0 :(得分:1)
您可以使用ST_MakeLine
来聚合点,然后使用ST_Length
来聚合点,这可以采用地理参数来获取距离
SELECT trak_id, ST_Length(ST_MakeLine("geography"::geometry)::geography) as d
FROM data
GROUP by track_id --optionally group by date for example