Esempio n. 1
0
def groupPoints(points, epsilon=150, min_samples=1) :

	if not points :
		return []

	meters = []

	for p in points :
		coords = []
		coords.append(distance.haversineDistance(0, p["lat"], 0, 0))
		coords.append(distance.haversineDistance(p["lng"], 0, 0, 0))
		meters.append(coords)
	
	db = DBSCAN(eps=epsilon, min_samples=min_samples).fit(meters)
	labels = db.labels_
	
	unique_labels = set(labels)

	for current_label in unique_labels :
		lat_sum = 0
		lng_sum = 0
		count = 0
		for i in range((len(points))) :
			if labels[i] == current_label :
				lat_sum += points[i]["lat"]
				lng_sum += points[i]["lng"]
				count+=1
		for i in range(len(points)):
			if labels[i]==current_label:
				points[i]["label"] = int(current_label)
				points[i]["lat"] = lat_sum/count
				points[i]["lng"] = lng_sum/count
			
	return points
Esempio n. 2
0
def removeSmallSegments(segments, nb_points, min_dist) :
	k=0
	while k <len(segments):
		if len(segments[k])<nb_points:
			total_dist=0
			for i in range(1, len(segments[k])):
				total_dist+=distance.haversineDistance(
									segments[k]["longitude"][i-1], 
									segments[k]["latitude"][i-1], 
									segments[k]["longitude"][i], 
									segments[k]["latitude"][i])
			if total_dist<min_dist:
				segments.pop(k)
				k-=1
		k+=1
	return segments
Esempio n. 3
0
def fdistance(df, i, j):
    return distance.haversineDistance(df["lng_mean_filt"][i],
                                      df["lat_mean_filt"][i],
                                      df["lng_mean_filt"][j],
                                      df["lat_mean_filt"][j])
Esempio n. 4
0
def fdistance(df, i, j) :
	return distance.haversineDistance(
		df["longitude"][i],
		df["latitude"][i],
		df["longitude"][j],
		df["latitude"][j])
Esempio n. 5
0
def errorDistances(data, filt_lat_name, filt_lng_name):
	error=[]
	for i in range(data['latitude'].size):
		error.append(distance.haversineDistance(data["longitude"][i], data["latitude"][i], data[filt_lng_name][i], data[filt_lat_name][i]))
	return error