|
@@ -10,6 +10,16 @@ import csv_parser
|
|
|
import recog
|
|
|
import metric
|
|
|
|
|
|
+def cluster_statistic(xy):
|
|
|
+ center = np.array([np.average(xy[:, 0]), np.average(xy[:, 1])])
|
|
|
+ center_p = namedtuple("point", "lon lat")(center[0], center[1])
|
|
|
+ rad = 0
|
|
|
+ for loc in xy:
|
|
|
+ p = namedtuple("point", "lon lat")(loc[0], loc[1])
|
|
|
+ rad = max(rad, metric.spherical_distance(center_p, p))
|
|
|
+ rad *= 6400 * 1000
|
|
|
+ return (center, rad)
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
|
data = csv_parser.parse_data_from_csv('pitchtest0730.csv')
|
|
|
groups = groupby(data, key = lambda x: x.hwid)
|
|
@@ -66,16 +76,10 @@ if __name__ == '__main__':
|
|
|
|
|
|
xy = x[class_member_mask]
|
|
|
if k != -1:
|
|
|
+ center, rad = cluster_statistic(xy)
|
|
|
print("cluster %d:" % k)
|
|
|
- center = np.array([np.average(xy[:, 0]), np.average(xy[:, 1])])
|
|
|
print("size =", len(xy))
|
|
|
print("center = %f, %f" % (center[0], center[1]))
|
|
|
- center_p = namedtuple("point", "lon lat")(center[0], center[1])
|
|
|
- rad = 0
|
|
|
- for loc in xy:
|
|
|
- p = namedtuple("point", "lon lat")(loc[0], loc[1])
|
|
|
- rad = max(rad, metric.spherical_distance(center_p, p))
|
|
|
- rad *= 6400 * 1000
|
|
|
print("radius = %f m" % rad)
|
|
|
|
|
|
yaw = yaws[class_member_mask]
|
|
@@ -86,9 +90,14 @@ if __name__ == '__main__':
|
|
|
for each in np.linspace(0, 1, len(lbs))]
|
|
|
for l in lbs:
|
|
|
if l != -1:
|
|
|
- print(" sub-cluster %d: size = %d, avg yaw = %f" %
|
|
|
- (l, np.sum(db_yaw.labels_ == l),
|
|
|
- 180 / pi * np.average(yaw[(db_yaw.labels_ == l)])))
|
|
|
+ mask = (db_yaw.labels_ == l)
|
|
|
+ center, rad = cluster_statistic(xy[mask])
|
|
|
+ print(" sub-cluster %d:" % l)
|
|
|
+ print(" size =", np.sum(mask))
|
|
|
+ print(" center = %f, %f" % (center[0], center[1]))
|
|
|
+ print("radius = %f m" % rad)
|
|
|
+ print(" avg yaw =",
|
|
|
+ np.average(np.fmod(yaw[mask], 2*pi)) / pi * 180)
|
|
|
|
|
|
kwargs = {'width': 1e-5}
|
|
|
for i in range(len(xy)):
|