Skip to content

Instantly share code, notes, and snippets.

@lmeulen
Created April 3, 2021 12:00
Show Gist options
  • Save lmeulen/1f85eeba7f6fa05f2839fd4edec43ee0 to your computer and use it in GitHub Desktop.
Save lmeulen/1f85eeba7f6fa05f2839fd4edec43ee0 to your computer and use it in GitHub Desktop.
crowdedness_interpolate_trip
def get_trip_data(number, date):
trip = trips[(trips.trip_short_name==number) & (trips.date==date)].iloc[0]
tripid = trip['trip_id']
shapeid = trip['shape_id']
tripshape = shapes[shapes.shape_id == shapeid]
tripstops = stoptimes[stoptimes.trip_id==tripid].sort_values('stop_sequence')
lastdep = -1
lastdist= -1
seq = 0
dl = []
for position in tripstops.iterrows():
arr = position[1][3]
dep = position[1][4]
dist = position[1][5]
dist = dist + 0.1 if dist == lastdist else dist
arr = arr + 1 if arr == lastdep else arr
stop = position[1][2]
if (dist == dist) & (arr == arr):
if lastdep > 0:
seq = seq+1
stepsize = ((dist-lastdist) / (arr-lastdep))
for t in range(lastdep+1, arr):
dst = int(lastdist + ( (t - lastdep) * stepsize))
lat, lon = interpolate_lat_lon(tripshape, dst)
dl.append({'trip_id': tripid, 'time': int(t), 'lat': lat, 'lon': lon,
'stop_id': stop, 'ritnumber' : number, 'sequence' : seq})
seq = seq+1
for t in range(arr, dep+1):
dst = int(dist)
lat, lon = interpolate_lat_lon(tripshape, dst)
dl.append({'trip_id': tripid, 'time': int(t), 'lat': lat, 'lon': lon,
'stop_id': stop, 'ritnumber' : number, 'sequence' : seq})
lastdep = dep
lastdist = dist
df = pd.DataFrame(dl)
df.trip_id = df.trip_id.astype(int)
df.sequence = df.sequence.astype(int)
df.time = df.time.astype(int)
df.ritnumber = df.ritnumber.astype(int)
df.stop_id = df.stop_id.astype(int).astype(str)
df = df[['trip_id', 'ritnumber', 'sequence', 'time', 'stop_id', 'lat', 'lon']]
return df
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment