我想用LINESTRING来记录汽车驾驶的路径,它既有空间信息,也有时间信息。
在PostGIS中,有没有办法为LINESTRING中的每个POINT分配时间戳?
答案 0 :(得分:1)
不,这是不可能的,因为线串以二进制格式存储,即所谓的Enhanced Well-Known Binary (EWKB)格式。在该格式中,您不能将任何信息与各个坐标相关联。
您可以做的是在(a)单独的表格中沿着汽车的路径存储点,然后使用标准的PostGIS函数(例如{{1)将这些点与线串(可能是道路网络)相关联。 } {},ST_Distance()
或linear referencing中的任何一个。
你的模型会是这样的:
ST_ClosestPoint()
使用此结构,您可以使用标准SQL查询将汽车的每个位置与特定的线串相关联,或者与线串的某个位置相关联(例如table: car
id serial PRIMARY KEY
...
table: ride
id serial PRIMARY KEY
car integer NOT NULL REFERENCES car
...
table: ride_path
id serial PRIMARY KEY
ride integer NOT NULL REFERENCES ride
loc geometry(4326, 'POINT') NOT NULL
tim timestamp
...
。
答案 1 :(得分:0)
我一直使用LINESTRINGM格式存储GPS曲目,将时间戳存储为" unix time_t" M坐标中的值(即1970-01-01 00:00:00以来的秒数)。它需要一些转换才能获得更友好的SQL时间格式,但它可以整齐地保存在一起。