Esempio n. 1
0
def test():
    probes, links = read_data()
    link_points, belong = flatten_uniq(links)
    print "%d probe points loaded" % len(probes)
    print "%d link points loaded" % len(link_points)

    probes = np.array(random.sample(probes, 100))
    # print probes
    link_points = np.array(link_points)
    probes_rad = np.deg2rad(probes)
    link_points_rad = np.deg2rad(link_points)

    knns_kd = evaluate(
        lambda: nearest_kdtree(
            probes_rad, link_points_rad, n=30, is_filter=True), "kdtree")
    knns_force = evaluate(
        lambda: nearest_force(probes_rad, link_points_rad, n=30),
        "brute force")

    for idx, (k1, k2) in enumerate(izip(knns_kd, knns_force)):
        diff = np.setdiff1d(k2, k1)
        if diff.size > 0:
            print diff
            print probes[idx]
            print link_points[diff]
            print haversine_np(probes_rad[idx], link_points_rad[diff])
Esempio n. 2
0
def probe_to_link_dist(link_points, probe):
    link_points_rad = np.deg2rad(link_points)
    probe_rad = np.deg2rad(probe)

    #底边
    base_side = haversine_np(link_points_rad[:-1,:], link_points_rad[1:,:])
    #腰
    tmp = haversine_np(probe_rad, link_points_rad)
    side1 = tmp[:-1]
    side2 = tmp[1:]

    link_dis = calc_link_dis(base_side, side1, side2)
    return np.min(link_dis)
Esempio n. 3
0
def probe_to_link_dist(link_points, probe):
    link_points_rad = np.deg2rad(link_points)
    probe_rad = np.deg2rad(probe)

    #底边
    base_side = haversine_np(link_points_rad[:-1, :], link_points_rad[1:, :])
    #腰
    tmp = haversine_np(probe_rad, link_points_rad)
    side1 = tmp[:-1]
    side2 = tmp[1:]

    link_dis = calc_link_dis(base_side, side1, side2)
    return np.min(link_dis)
Esempio n. 4
0
def calc_road_vec(probe, link_points):
    link_points_rad = np.deg2rad(link_points)
    probe_rad = np.deg2rad(probe)

    base_side = haversine_np(link_points_rad[:-1,:], link_points_rad[1:,:])
    tmp = haversine_np(probe_rad, link_points_rad)
    side1 = tmp[:-1]
    side2 = tmp[1:]

    link_dis = calc_link_dis(base_side, side1, side2)
    min_idx = np.argmin(link_dis)
    road_vec = np.array(link_points[min_idx + 1]) - np.array(link_points[min_idx])
    return road_vec
Esempio n. 5
0
def calc_road_vec(probe, link_points):
    link_points_rad = np.deg2rad(link_points)
    probe_rad = np.deg2rad(probe)

    base_side = haversine_np(link_points_rad[:-1, :], link_points_rad[1:, :])
    tmp = haversine_np(probe_rad, link_points_rad)
    side1 = tmp[:-1]
    side2 = tmp[1:]

    link_dis = calc_link_dis(base_side, side1, side2)
    min_idx = np.argmin(link_dis)
    road_vec = np.array(link_points[min_idx + 1]) - np.array(
        link_points[min_idx])
    return road_vec
Esempio n. 6
0
def dis_ref_nonref(probe, link_points, nearest_dis, link_len):
    link_points_rad = np.deg2rad(link_points)
    probe_rad = np.deg2rad(probe)

    base_side = haversine_np(link_points_rad[:-1, :], link_points_rad[1:, :])
    tmp = haversine_np(probe_rad, link_points_rad)
    side1 = tmp[:-1]
    side2 = tmp[1:]

    link_dis = calc_link_dis(base_side, side1, side2)
    min_idx = np.argmin(link_dis)
    proj_len = calc_proj_len(base_side[min_idx], side1[min_idx], side2[min_idx])
    dis_ref = np.sum(base_side[:min_idx]) + proj_len
    dis_ref = dis_ref / np.sum(base_side) * link_len
    dis_nonref = link_len - dis_ref
    return dis_ref, dis_nonref
Esempio n. 7
0
def dis_ref_nonref(probe, link_points, nearest_dis, link_len):
    link_points_rad = np.deg2rad(link_points)
    probe_rad = np.deg2rad(probe)

    base_side = haversine_np(link_points_rad[:-1,:], link_points_rad[1:,:])
    tmp = haversine_np(probe_rad, link_points_rad)
    side1 = tmp[:-1]
    side2 = tmp[1:]

    link_dis = calc_link_dis(base_side, side1, side2)
    min_idx = np.argmin(link_dis)
    proj_len = calc_proj_len(base_side[min_idx], side1[min_idx], side2[min_idx])
    dis_ref = np.sum(base_side[:min_idx]) + proj_len
    dis_ref = dis_ref / np.sum(base_side) * link_len
    dis_nonref = link_len - dis_ref
    return dis_ref, dis_nonref
Esempio n. 8
0
def test():
    probes, links = read_data()
    link_points, belong = flatten_uniq(links)
    print "%d probe points loaded" % len(probes)
    print "%d link points loaded" % len(link_points)

    probes = np.array(random.sample(probes, 100))
    # print probes
    link_points = np.array(link_points)
    probes_rad = np.deg2rad(probes)
    link_points_rad = np.deg2rad(link_points)

    knns_kd = evaluate(lambda: nearest_kdtree(probes_rad, link_points_rad, n=30, is_filter=True), "kdtree")
    knns_force = evaluate(lambda: nearest_force(probes_rad, link_points_rad, n=30), "brute force")

    for idx, (k1, k2) in enumerate(izip(knns_kd, knns_force)):
        diff = np.setdiff1d(k2, k1)
        if diff.size > 0:
            print diff
            print probes[idx]
            print link_points[diff]
            print haversine_np(probes_rad[idx], link_points_rad[diff])
Esempio n. 9
0
def compute_traj_diff_time_distance(traj=None):
    """Compute the sampling time and the coordinate distance."""
    # Compute the time difference
    time_diff_array = (traj["time"].iloc[1:].reset_index(drop=True) - traj[
        "time"].iloc[:-1].reset_index(drop=True)).dt.total_seconds() / 60
#    dist_array = np.sqrt(np.diff(traj[x].values)**2 + np.diff(traj[y].values)**2)

    # Compute the coordinate distance
    dist_diff_array = haversine_np(traj["lon"].values[1:],  # lon_0
                                   traj["lat"].values[1:],  # lat_0
                                   traj["lon"].values[:-1], # lon_1
                                   traj["lat"].values[:-1]  # lat_1
                                   )

    # Filling the fake values
    time_diff_array = [0.5] + time_diff_array.tolist()
    dist_diff_array = [0.5] + dist_diff_array.tolist()
    traj["time_array"] = time_diff_array
    traj["dist_array"] = dist_diff_array
    return traj
Esempio n. 10
0
def nearest_probe_force(probe, link_points, n):
    distance = haversine_np(probe, link_points)
    knns = np.argsort(distance)[:n]
    # print distance[knns]
    return knns
Esempio n. 11
0
def nearest_probe_force(probe, link_points, n):
    distance = haversine_np(probe, link_points)
    knns = np.argsort(distance)[:n]
    # print distance[knns]
    return knns