-
Notifications
You must be signed in to change notification settings - Fork 2
/
trajectory.R
59 lines (47 loc) · 2.24 KB
/
trajectory.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#This file contains code to create a data structure (a list),
#convert the raw data in the read JSONs into objects of the class
#and write them as elements of the list
#Loads required package dependencies including "trajectories"
#which contain the definition of the class
library("sp")
library("spacetime")
library("trajectories")
i = 1
#This function creates the objects and puts it in the list
#It takes as input a list of data frames in the structure returned by loc2glob()
create_trajectories = function(global_json)
{
#Initialize empty list
cam_trajs = list()
#For each camera in the list of data frames...
for(cams in global_json)
{
# print(i)
j = 1
#Initialize an empty list for tracks from a particular camera
each_cam = list()
#For each tracks in that particular camera...
for(tracks in cams)
{
#Create objecs of class Track
#Create a SpatialPointsDataFrame (from sp) object with coordinates (coords = )
#and data for each of these coordinates (data = ).
sp_obj = SpatialPointsDataFrame(coords = data.frame(tracks$x, tracks$y), data = subset(tracks, select = -c(1:2)))
#Create a stidf object with an explicit time attribute (time = ). The data (data = ) is retained
stidf_obj = STIDF(sp = sp_obj, time = sp_obj@data$time, data = subset(data.frame(misc = sp_obj@data), select = -c(2)))
#Finally create an object of class Track (from trajectories) from the STIDF object created above
track_obj = Track(stidf_obj)
# Important Note: For some JSON files, the following error is thrown on the previous line:
# Error in data.frame(distance = distance, duration = duration, speed = speed, :
# arguments imply differing number of rows: 1, 0
#Append this Track object to the list for that particular camera (each_cam)
each_cam = c(each_cam, list(track_obj))
j = j+1
}
#Append the list for a camera (containing all the tracks observed by that camera)
#to the list cam_trajs which contains trajectories as list elements from all the cameras
cam_trajs = c(cam_trajs, each_cam)
i = i+1
}
return(cam_trajs)
}