Example #1
0
def prepareDataKMeans(lSegments):
    for segment in lSegments:
        segment['distance'] = distance.getDistances(segment)
        segment['velocity'] = distance.getVelocities(segment)
        segment['speedClass'] = initSpeedClass(segment)
        segment['numSC'] = initSpeedClass(segment)
    return lSegments
Example #2
0
def importJson(filepath, addColumns=True):

    # Loading data
    raw = pd.io.json.read_json(filepath)
    df = raw['locations'].apply(pd.Series)

    # Create latitude and longitude columns
    df['latitude'] = df['latitudeE7'] * 0.0000001
    df['longitude'] = df['longitudeE7'] * 0.0000001

    # Clean up columns
    columns = ["timestampMs", "latitude", "longitude"]
    for col in list(df):
        if col not in columns:
            del df[col]

    # Add date column in format 'dd-mm-YY'
    dates = []
    for timestamp in df['timestampMs']:
        dates.append(
            datetime.datetime.fromtimestamp(int(timestamp) /
                                            1000).strftime('%d-%m-%Y'))
    df['date'] = dates

    # Add time column in format 'HH:MM:SS'
    time = []
    for row in df['timestampMs']:
        time.append(
            datetime.datetime.fromtimestamp(int(row) /
                                            1000).strftime('%H:%M:%S'))
    df['time'] = time

    if not addColumns:
        return df
    else:
        # Add delay column seconds
        delay = []
        delay.append(0)
        for i in range(df['timestampMs'].size - 1):
            delay.append(
                int(int(df['timestampMs'][i]) - int(df['timestampMs'][i + 1]))
                / 1000)
        df['delay'] = delay

        # Add distance, velocity and acceleration
        df['distance'] = distance.getDistances(df)
        df['velocity'] = distance.getVelocities(df)
        df['acceleration'] = distance.getAccelerations(df)

        return df
Example #3
0
def filterBySegment(input_data, limite):
	data = input_data.copy()
	lat_filtered=[0]*len(data)
	long_filtered=[0]*len(data)

	data = delay_segment_dataframe(data, limit=limite)
	segment_count = max(data['segment'])

	segment_indexes = [0]

	j=0
	for i in range(data['segment'].size):
		if data['segment'][i]!=j:
			j+=1
			segment_indexes.append(i)
			
	segment_indexes.append(data['segment'].size+1)

	for k in range(segment_count):
		distances = data["distance"][segment_indexes[k]:segment_indexes[k+1]]
		dist_moy = np.mean(distances)

		if dist_moy<20 and segment_indexes[k+1]-segment_indexes[k]>8:
			data = medianFilterSegment(data, 3, segment_indexes[k], segment_indexes[k+1])

		elif dist_moy<50 and segment_indexes[k+1]-segment_indexes[k]>6:
			data = medianFilterSegment(data, 2, segment_indexes[k], segment_indexes[k+1])

		elif dist_moy<150 and segment_indexes[k+1]-segment_indexes[k]>6:
			data = meanFilterSegment(data, 2, segment_indexes[k], segment_indexes[k+1])


	# Add distance, velocity and acceleration 
	data['distance'] = distance.getDistances(data)
	data['velocity'] = distance.getVelocities(data)
	data['acceleration'] = distance.getAccelerations(data)


	return data