GPS2MobMat <- function(locations_df,itrvl=10,accuracylim=51,r=NULL,w=NULL,tint_m=NULL,tint_k=NULL){ if(is.null(r)){ r=sqrt(itrvl) } cat("Read GPS coordinates...\n") mat=as.matrix(locations_df) colnames(mat)=c("timestamp","latitude","longitude","altitude","accuracy") mat=data.frame(mat) mat = mat[order(mat[,1]),] mat=mat[which(mat$accuracy0){ #avgmat = rbind(avgmat,c(4,tstart+itrvl/2,tstart+itrvl*(nummiss+1)+itrvl/2,NA)) avgmat[IDam,] = c(4,tstart+itrvl/2,tstart+itrvl*(nummiss+1)+itrvl/2,NA) count=count+1 IDam=IDam+1 } tstart=tstart+itrvl*(nummiss+1) nextline[1]=1 nextline[2]=tstart+itrvl/2 nextline[3]=mat[i,2] nextline[4]=mat[i,3] numitrvl=1 } } avgmat = avgmat[1:count,] avgmat=cbind(avgmat[,1:4],NA,NA) ID1 = which(avgmat[,1]==1) cat("Convert from Lat/Lon to X/Y...\n") obj=LatLong2XY(avgmat[ID1,3],avgmat[ID1,4]) avgmat[ID1,5:6]=cbind(obj$x_v,obj$y_v) outmat=c() curind=1 cat("Convert from X/Y to flights/pauses...\n") for(i in 1:nrow(avgmat)){ #ProgressBar(nrow(avgmat),i) if(avgmat[i,1]==4){ outmat=rbind(outmat,ExtractFlights(avgmat[curind:(i-1),c(5,6,2)],r,w), c(avgmat[i,1],NA,NA,avgmat[i,2],NA,NA,avgmat[i,3])) curind=i+1 } } if(curind<=nrow(avgmat)){ outmat=rbind(outmat,ExtractFlights(avgmat[curind:nrow(avgmat),c(4,3,2)],r,w)) } rownames(outmat)=NULL colnames(outmat)=c("Code","x0","y0","t0","x1","y1","t1") return(outmat) }