""" takes in angle and heading in degrees (note conversion to radians in function) k goes from 0 to infinity and is a point at infinity, and a uniform distribution at 0 """ def von_mises(angle,heading,k): return np.exp(k*np.cos(np.radians(angle)-np.radians(heading)))/(2*np.pi*np.i0(k)) circle_test = [] for i in xrange(360): circle_test.append(von_mises(i,150,0)) plt.figure() plt.plot(circle_test) plt.title('k=0 -- should be uniform') plt.show() circle_test2 = [] for i in xrange(360): circle_test2.append(von_mises(i,150,1)) plt.figure() plt.plot(circle_test2) plt.title('k=1 -- should be bell curve') plt.show() circle_test3 = [] for i in xrange(360): circle_test3.append(von_mises(i,150,10)) plt.figure() plt.plot(circle_test3) plt.title('k=10 -- should be contracting/converging toward a point') plt.show() """ takes in angle and heading in degrees (note conversion to radians in function) k goes from 0-1 and is a point at 1, and a uniform distribution at 0 """ def wrapped_cauchy(angle,heading,k): return np.float((1-k**2))/(1+k**2-2*k*np.cos(np.radians(angle)-np.radians(heading))) circle_test = [] for i in xrange(360): circle_test.append(wrapped_cauchy(i,150,0)) plt.figure() plt.plot(circle_test) plt.title('k=0 -- should be uniform') plt.show() circle_test2 = [] for i in xrange(360): circle_test2.append(wrapped_cauchy(i,150,0.5)) plt.figure() plt.plot(circle_test2) plt.title('k=0.5 -- should be bell curve') plt.show() circle_test3 = [] for i in xrange(360): circle_test3.append(wrapped_cauchy(i,150,0.99)) plt.figure() plt.plot(circle_test3) plt.title('k=0.99 -- should be contracting/converging toward a point') plt.show() """ takes in a heading, a starting location, and a k for picking a new heading based on the Von Mises distribution. k = 0 -> uniform distribution. jump all over the place, true random walk. k = 1,10 -> similar to before. tends to go straight ahead or near-straight ahead. 1 is like a normal distribution with a large standard deviation from the mean. 10 is like a normal distribution with a small standard deviation from the mean. """ def von_mises_prob_step(heading, k, start_lon, start_lat, ang_dist): angle_list = range(0,360) #we create a radius of 360 points that would be the heading for 360 possible degrees circle = make_circle(ang_dist,len(angle_list),start_lon,start_lat) weights = np.zeros(len(angle_list)) #make 360 array for i in xrange(len(weights)): weights[i] = von_mises(angle_list[i],heading,k) #makes array of von mises distributed weights. #initialize new possible coordinates within an hr's distance, new weights for the odds, and new angles new_circle = [] new_weights = [] new_angles = [] #make sure lat & lon are in bounds for i in xrange(len(circle)): if circle[i][0] >= lat_min and circle[i][0] <= lat_max and circle[i][1] >= lon_min and circle[i][1] <= lon_max: new_circle.append(circle[i]) new_weights.append(weights[i]) new_angles.append(angle_list[i]) return new_circle,new_weights,new_angles """ takes in a heading, a starting location, and a k for picking a new heading based on the Wrapped Cauchy distribution. k = 0 -> uniform distribution. jump all over the place, true random walk. k = 0.5 -> similar to before. tends to go straight ahead or near-straight ahead. k = 0.95 -> plane makes a bee-line for straight ahead. there's just no "convincing" it otherwise. almost no deviation from 0 degrees relative to previous heading. """ def wrapped_cauchy_prob_step(heading, k, start_lon, start_lat, ang_dist): angle_list = range(0,360) #we create a radius of 360 points that would be the heading for 360 possible degrees circle = make_circle(ang_dist,len(angle_list),start_lon,start_lat) weights = np.zeros(len(angle_list)) #make 360 array for i in xrange(len(weights)): weights[i] = wrapped_cauchy(angle_list[i],heading,k) #initialize new possible coordinates within an hr's distance, new weights for the odds, and new angles new_circle = [] new_weights = [] new_angles = [] #make sure lat & lon are in bounds for i in xrange(len(circle)): if circle[i][0] >= lat_min and circle[i][0] <= lat_max and circle[i][1] >= lon_min and circle[i][1] <= lon_max: new_circle.append(circle[i]) new_weights.append(weights[i]) new_angles.append(angle_list[i]) return new_circle,new_weights,new_angles """ a function which given a list of discrete probabilities for each destination point, it will choose one of those points. heading_init -- initial direction was headed at last known point lon_init,lat_init -- last known point of plane in longitude and latitude km_hop -- how far the plane went in the time interval, 1 hr. So in simplest case, the 777's cruising speed/hr. k -- affects the heading distribution, based on a Von Mises distribution from the current heading (0 deg). ping_percent_err -- what % error you assume in the Inmarsat 5th ping. either 2.5 or 5%. uses Von Mises distribution for heading """ def five_hop_model_von_mises(heading_init,lon_init,lat_init,km_hop,k,ping_percent_err): #initialize plane_lat = np.zeros(5) #initialize plane location after each hop (assumed to be 1 hr for now) plane_lon = np.zeros(5) lat = lat_init lon = lon_init heading = heading_init for i in xrange(len(plane_lat)): new_circle,new_weights,new_angles = von_mises_prob_step(heading,k,lon,lat,km_hop/eq_deg_km) #new_circle gives up possible coords for diff headings raw_weights = np.zeros(len(new_circle)) for j in xrange(len(new_circle)): raw_weights[j] = new_weights[j]*ping_prob_normal(inmarsat[0],inmarsat[1],new_circle[j][0],new_circle[j][1],ping_percent_err,dist_from_sat,earth_radius) probs = raw_weights / np.sum(raw_weights) #normalize index = range(len(new_circle)) chosen = np.random.choice(index,size=None,p=probs) #print "chosen",chosen heading = new_angles[chosen] #update heading plane_lat[i],plane_lon[i] = new_circle[chosen] #update position lat = plane_lat[i] lon = plane_lon[i] #at end of simulation, run the last location & heading for plane for 4 different times route1 = make_vector(0.25*km_hop/eq_deg_km,heading,lon,lat) route2 = make_vector(0.5*km_hop/eq_deg_km,heading,lon,lat) route3 = make_vector(0.75*km_hop/eq_deg_km,heading,lon,lat) route4 = make_vector((59./60.)*km_hop/eq_deg_km,heading,lon,lat) new_plane_lat = np.zeros(9) new_plane_lon = np.zeros(9) for i in xrange(len(plane_lat)): new_plane_lat[i] = plane_lat[i] new_plane_lon[i] = plane_lon[i] new_plane_lat[5] = route1[0] new_plane_lat[6] = route2[0] new_plane_lat[7] = route3[0] new_plane_lat[8] = route4[0] new_plane_lon[5] = route1[1] new_plane_lon[6] = route2[1] new_plane_lon[7] = route3[1] new_plane_lon[8] = route4[1] return new_plane_lat,new_plane_lon """ a function which given a list of discrete probabilities for each destination point, it will choose one of those points. heading_init -- initial direction was headed at last known point lon_init,lat_init -- last known point of plane in longitude and latitude km_hop -- how far the plane went in the time interval, 1 hr. So in simplest case, the 777's cruising speed/hr. k -- affects the heading distribution, based on a Wrapped Cauchy distribution from the current heading (0 deg). ping_percent_err -- what % error you assume in the Inmarsat 5th ping. either 2.5 or 5%. uses Wrapped Cauchy distribution for heading """ def five_hop_model_wrapped_cauchy(heading_init,lon_init,lat_init,km_hop,k,ping_percent_err): #initialize plane_lat = np.zeros(5) #initialize plane location after each hop (assumed to be 1 hr for now) plane_lon = np.zeros(5) lat = lat_init lon = lon_init heading = heading_init for i in xrange(len(plane_lat)): new_circle,new_weights,new_angles = wrapped_cauchy_prob_step(heading,k,lon,lat,km_hop/eq_deg_km) #new_circle gives up possible coords for diff headings raw_weights = np.zeros(len(new_circle)) for j in xrange(len(new_circle)): raw_weights[j] = new_weights[j]*ping_prob_normal(inmarsat[0],inmarsat[1],new_circle[j][0],new_circle[j][1],ping_percent_err,dist_from_sat,earth_radius) probs = raw_weights / np.sum(raw_weights) #normalize index = range(len(new_circle)) chosen = np.random.choice(index,size=None,p=probs) #print "chosen",chosen heading = new_angles[chosen] #update heading plane_lat[i],plane_lon[i] = new_circle[chosen] #update position lat = plane_lat[i] lon = plane_lon[i] #at end of simulation, run the last location & heading for plane for 4 different times route1 = make_vector(0.25*km_hop/eq_deg_km,heading,lon,lat) route2 = make_vector(0.5*km_hop/eq_deg_km,heading,lon,lat) route3 = make_vector(0.75*km_hop/eq_deg_km,heading,lon,lat) route4 = make_vector((59./60.)*km_hop/eq_deg_km,heading,lon,lat) new_plane_lat = np.zeros(9) new_plane_lon = np.zeros(9) for i in xrange(len(plane_lat)): new_plane_lat[i] = plane_lat[i] new_plane_lon[i] = plane_lon[i] new_plane_lat[5] = route1[0] new_plane_lat[6] = route2[0] new_plane_lat[7] = route3[0] new_plane_lat[8] = route4[0] new_plane_lon[5] = route1[1] new_plane_lon[6] = route2[1] new_plane_lon[7] = route3[1] new_plane_lon[8] = route4[1] return new_plane_lat,new_plane_lon last_known_heading = 255.136 km_hop = 905 #assuming 1 hr intervals, at 905 km/hr which is 777 cruising speed -- use for test case # max speed of a Boeing 777 is 950 km/hr FYI N = 1000 #define number of simulations to run -- set to 1000, but set low number to make sure it's working first. percenterror1, percenterror2 = 0.05, 0.025 k1, k2, k3 = 0, 1, 10 #Von Mises constants -- uniform, bell, point-like #5 percent error w/ different ks plane_hops_5per_k1 = [] plane_hops_5per_k2 = [] plane_hops_5per_k3 = [] #2.5 percent error w/ different ks plane_hops_2per_k1 = [] plane_hops_2per_k2 = [] plane_hops_2per_k3 = [] for i in xrange(N): #5% error runs plane_hops_5per_k1.append(five_hop_model_von_mises(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k1,percenterror1)) plane_hops_5per_k2.append(five_hop_model_von_mises(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k2,percenterror1)) plane_hops_5per_k3.append(five_hop_model_von_mises(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k3,percenterror1)) #2.5% error runs plane_hops_2per_k1.append(five_hop_model_von_mises(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k1,percenterror2)) plane_hops_2per_k2.append(five_hop_model_von_mises(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k2,percenterror2)) plane_hops_2per_k3.append(five_hop_model_von_mises(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k3,percenterror2)) # 5per_k1 run first_lat_5per_k1 = [] two_lat_5per_k1 = [] three_lat_5per_k1 = [] four_lat_5per_k1 = [] final_lat_5per_k1 = [] first_lon_5per_k1 = [] two_lon_5per_k1 = [] three_lon_5per_k1 = [] four_lon_5per_k1 = [] final_lon_5per_k1 = [] route1_lat_5per_k1 = [] route2_lat_5per_k1 = [] route3_lat_5per_k1 = [] route4_lat_5per_k1 = [] route1_lon_5per_k1 = [] route2_lon_5per_k1 = [] route3_lon_5per_k1 = [] route4_lon_5per_k1 = [] for i in xrange(len(plane_hops_5per_k1)): first_lat_5per_k1.append(plane_hops_5per_k1[i][0][0]) first_lon_5per_k1.append(plane_hops_5per_k1[i][1][0]) two_lat_5per_k1.append(plane_hops_5per_k1[i][0][1]) two_lon_5per_k1.append(plane_hops_5per_k1[i][1][1]) three_lat_5per_k1.append(plane_hops_5per_k1[i][0][2]) three_lon_5per_k1.append(plane_hops_5per_k1[i][1][2]) four_lat_5per_k1.append(plane_hops_5per_k1[i][0][3]) four_lon_5per_k1.append(plane_hops_5per_k1[i][1][3]) final_lat_5per_k1.append(plane_hops_5per_k1[i][0][4]) final_lon_5per_k1.append(plane_hops_5per_k1[i][1][4]) route1_lat_5per_k1.append(plane_hops_5per_k1[i][0][5]) route1_lon_5per_k1.append(plane_hops_5per_k1[i][1][5]) route2_lat_5per_k1.append(plane_hops_5per_k1[i][0][6]) route2_lon_5per_k1.append(plane_hops_5per_k1[i][1][6]) route3_lat_5per_k1.append(plane_hops_5per_k1[i][0][7]) route3_lon_5per_k1.append(plane_hops_5per_k1[i][1][7]) route4_lat_5per_k1.append(plane_hops_5per_k1[i][0][8]) route4_lon_5per_k1.append(plane_hops_5per_k1[i][1][8]) # 5per_k2 run first_lat_5per_k2 = [] two_lat_5per_k2 = [] three_lat_5per_k2 = [] four_lat_5per_k2 = [] final_lat_5per_k2 = [] first_lon_5per_k2 = [] two_lon_5per_k2 = [] three_lon_5per_k2 = [] four_lon_5per_k2 = [] final_lon_5per_k2 = [] route1_lat_5per_k2 = [] route2_lat_5per_k2 = [] route3_lat_5per_k2 = [] route4_lat_5per_k2 = [] route1_lon_5per_k2 = [] route2_lon_5per_k2 = [] route3_lon_5per_k2 = [] route4_lon_5per_k2 = [] for i in xrange(len(plane_hops_5per_k2)): first_lat_5per_k2.append(plane_hops_5per_k2[i][0][0]) first_lon_5per_k2.append(plane_hops_5per_k2[i][1][0]) two_lat_5per_k2.append(plane_hops_5per_k2[i][0][1]) two_lon_5per_k2.append(plane_hops_5per_k2[i][1][1]) three_lat_5per_k2.append(plane_hops_5per_k2[i][0][2]) three_lon_5per_k2.append(plane_hops_5per_k2[i][1][2]) four_lat_5per_k2.append(plane_hops_5per_k2[i][0][3]) four_lon_5per_k2.append(plane_hops_5per_k2[i][1][3]) final_lat_5per_k2.append(plane_hops_5per_k2[i][0][4]) final_lon_5per_k2.append(plane_hops_5per_k2[i][1][4]) route1_lat_5per_k2.append(plane_hops_5per_k2[i][0][5]) route1_lon_5per_k2.append(plane_hops_5per_k2[i][1][5]) route2_lat_5per_k2.append(plane_hops_5per_k2[i][0][6]) route2_lon_5per_k2.append(plane_hops_5per_k2[i][1][6]) route3_lat_5per_k2.append(plane_hops_5per_k2[i][0][7]) route3_lon_5per_k2.append(plane_hops_5per_k2[i][1][7]) route4_lat_5per_k2.append(plane_hops_5per_k2[i][0][8]) route4_lon_5per_k2.append(plane_hops_5per_k2[i][1][8]) # 5per_k3 run first_lat_5per_k3 = [] two_lat_5per_k3 = [] three_lat_5per_k3 = [] four_lat_5per_k3 = [] final_lat_5per_k3 = [] first_lon_5per_k3 = [] two_lon_5per_k3 = [] three_lon_5per_k3 = [] four_lon_5per_k3 = [] final_lon_5per_k3 = [] route1_lat_5per_k3 = [] route2_lat_5per_k3 = [] route3_lat_5per_k3 = [] route4_lat_5per_k3 = [] route1_lon_5per_k3 = [] route2_lon_5per_k3 = [] route3_lon_5per_k3 = [] route4_lon_5per_k3 = [] for i in xrange(len(plane_hops_5per_k3)): first_lat_5per_k3.append(plane_hops_5per_k3[i][0][0]) first_lon_5per_k3.append(plane_hops_5per_k3[i][1][0]) two_lat_5per_k3.append(plane_hops_5per_k3[i][0][1]) two_lon_5per_k3.append(plane_hops_5per_k3[i][1][1]) three_lat_5per_k3.append(plane_hops_5per_k3[i][0][2]) three_lon_5per_k3.append(plane_hops_5per_k3[i][1][2]) four_lat_5per_k3.append(plane_hops_5per_k3[i][0][3]) four_lon_5per_k3.append(plane_hops_5per_k3[i][1][3]) final_lat_5per_k3.append(plane_hops_5per_k3[i][0][4]) final_lon_5per_k3.append(plane_hops_5per_k3[i][1][4]) route1_lat_5per_k3.append(plane_hops_5per_k3[i][0][5]) route1_lon_5per_k3.append(plane_hops_5per_k3[i][1][5]) route2_lat_5per_k3.append(plane_hops_5per_k3[i][0][6]) route2_lon_5per_k3.append(plane_hops_5per_k3[i][1][6]) route3_lat_5per_k3.append(plane_hops_5per_k3[i][0][7]) route3_lon_5per_k3.append(plane_hops_5per_k3[i][1][7]) route4_lat_5per_k3.append(plane_hops_5per_k3[i][0][8]) route4_lon_5per_k3.append(plane_hops_5per_k3[i][1][8]) # 2per_k1 run first_lat_2per_k1 = [] two_lat_2per_k1 = [] three_lat_2per_k1 = [] four_lat_2per_k1 = [] final_lat_2per_k1 = [] first_lon_2per_k1 = [] two_lon_2per_k1 = [] three_lon_2per_k1 = [] four_lon_2per_k1 = [] final_lon_2per_k1 = [] route1_lat_2per_k1 = [] route2_lat_2per_k1 = [] route3_lat_2per_k1 = [] route4_lat_2per_k1 = [] route1_lon_2per_k1 = [] route2_lon_2per_k1 = [] route3_lon_2per_k1 = [] route4_lon_2per_k1 = [] for i in xrange(len(plane_hops_2per_k1)): first_lat_2per_k1.append(plane_hops_2per_k1[i][0][0]) first_lon_2per_k1.append(plane_hops_2per_k1[i][1][0]) two_lat_2per_k1.append(plane_hops_2per_k1[i][0][1]) two_lon_2per_k1.append(plane_hops_2per_k1[i][1][1]) three_lat_2per_k1.append(plane_hops_2per_k1[i][0][2]) three_lon_2per_k1.append(plane_hops_2per_k1[i][1][2]) four_lat_2per_k1.append(plane_hops_2per_k1[i][0][3]) four_lon_2per_k1.append(plane_hops_2per_k1[i][1][3]) final_lat_2per_k1.append(plane_hops_2per_k1[i][0][4]) final_lon_2per_k1.append(plane_hops_2per_k1[i][1][4]) route1_lat_2per_k1.append(plane_hops_2per_k1[i][0][5]) route1_lon_2per_k1.append(plane_hops_2per_k1[i][1][5]) route2_lat_2per_k1.append(plane_hops_2per_k1[i][0][6]) route2_lon_2per_k1.append(plane_hops_2per_k1[i][1][6]) route3_lat_2per_k1.append(plane_hops_2per_k1[i][0][7]) route3_lon_2per_k1.append(plane_hops_2per_k1[i][1][7]) route4_lat_2per_k1.append(plane_hops_2per_k1[i][0][8]) route4_lon_2per_k1.append(plane_hops_2per_k1[i][1][8]) # 2per_k2 run first_lat_2per_k2 = [] two_lat_2per_k2 = [] three_lat_2per_k2 = [] four_lat_2per_k2 = [] final_lat_2per_k2 = [] first_lon_2per_k2 = [] two_lon_2per_k2 = [] three_lon_2per_k2 = [] four_lon_2per_k2 = [] final_lon_2per_k2 = [] route1_lat_2per_k2 = [] route2_lat_2per_k2 = [] route3_lat_2per_k2 = [] route4_lat_2per_k2 = [] route1_lon_2per_k2 = [] route2_lon_2per_k2 = [] route3_lon_2per_k2 = [] route4_lon_2per_k2 = [] for i in xrange(len(plane_hops_2per_k2)): first_lat_2per_k2.append(plane_hops_2per_k2[i][0][0]) first_lon_2per_k2.append(plane_hops_2per_k2[i][1][0]) two_lat_2per_k2.append(plane_hops_2per_k2[i][0][1]) two_lon_2per_k2.append(plane_hops_2per_k2[i][1][1]) three_lat_2per_k2.append(plane_hops_2per_k2[i][0][2]) three_lon_2per_k2.append(plane_hops_2per_k2[i][1][2]) four_lat_2per_k2.append(plane_hops_2per_k2[i][0][3]) four_lon_2per_k2.append(plane_hops_2per_k2[i][1][3]) final_lat_2per_k2.append(plane_hops_2per_k2[i][0][4]) final_lon_2per_k2.append(plane_hops_2per_k2[i][1][4]) route1_lat_2per_k2.append(plane_hops_2per_k2[i][0][5]) route1_lon_2per_k2.append(plane_hops_2per_k2[i][1][5]) route2_lat_2per_k2.append(plane_hops_2per_k2[i][0][6]) route2_lon_2per_k2.append(plane_hops_2per_k2[i][1][6]) route3_lat_2per_k2.append(plane_hops_2per_k2[i][0][7]) route3_lon_2per_k2.append(plane_hops_2per_k2[i][1][7]) route4_lat_2per_k2.append(plane_hops_2per_k2[i][0][8]) route4_lon_2per_k2.append(plane_hops_2per_k2[i][1][8]) # 2per_k3 run first_lat_2per_k3 = [] two_lat_2per_k3 = [] three_lat_2per_k3 = [] four_lat_2per_k3 = [] final_lat_2per_k3 = [] first_lon_2per_k3 = [] two_lon_2per_k3 = [] three_lon_2per_k3 = [] four_lon_2per_k3 = [] final_lon_2per_k3 = [] route1_lat_2per_k3 = [] route2_lat_2per_k3 = [] route3_lat_2per_k3 = [] route4_lat_2per_k3 = [] route1_lon_2per_k3 = [] route2_lon_2per_k3 = [] route3_lon_2per_k3 = [] route4_lon_2per_k3 = [] for i in xrange(len(plane_hops_2per_k3)): first_lat_2per_k3.append(plane_hops_2per_k3[i][0][0]) first_lon_2per_k3.append(plane_hops_2per_k3[i][1][0]) two_lat_2per_k3.append(plane_hops_2per_k3[i][0][1]) two_lon_2per_k3.append(plane_hops_2per_k3[i][1][1]) three_lat_2per_k3.append(plane_hops_2per_k3[i][0][2]) three_lon_2per_k3.append(plane_hops_2per_k3[i][1][2]) four_lat_2per_k3.append(plane_hops_2per_k3[i][0][3]) four_lon_2per_k3.append(plane_hops_2per_k3[i][1][3]) final_lat_2per_k3.append(plane_hops_2per_k3[i][0][4]) final_lon_2per_k3.append(plane_hops_2per_k3[i][1][4]) route1_lat_2per_k3.append(plane_hops_2per_k3[i][0][5]) route1_lon_2per_k3.append(plane_hops_2per_k3[i][1][5]) route2_lat_2per_k3.append(plane_hops_2per_k3[i][0][6]) route2_lon_2per_k3.append(plane_hops_2per_k3[i][1][6]) route3_lat_2per_k3.append(plane_hops_2per_k3[i][0][7]) route3_lon_2per_k3.append(plane_hops_2per_k3[i][1][7]) route4_lat_2per_k3.append(plane_hops_2per_k3[i][0][8]) route4_lon_2per_k3.append(plane_hops_2per_k3[i][1][8]) #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_5per,circle_lat_err1_5per) x7,y7 = fig(circle_lon_err2_5per,circle_lat_err2_5per) #Add points after each hr x9,y9 = fig(first_lon_5per_k1,first_lat_5per_k1) x10,y10 = fig(two_lon_5per_k1,two_lat_5per_k1) x11,y11 = fig(three_lon_5per_k1,three_lat_5per_k1) x12,y12 = fig(four_lon_5per_k1,four_lat_5per_k1) x13,y13 = fig(final_lon_5per_k1,final_lat_5per_k1) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k1,route1_lat_5per_k1) x15,y15 = fig(route2_lon_5per_k1,route2_lat_5per_k1) x16,y16 = fig(route3_lon_5per_k1,route3_lat_5per_k1) x17,y17 = fig(route4_lon_5per_k1,route4_lat_5per_k1) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_5per,circle_lat_err1_5per) x7,y7 = fig(circle_lon_err2_5per,circle_lat_err2_5per) #Add points after each hr x9,y9 = fig(first_lon_5per_k2,first_lat_5per_k2) x10,y10 = fig(two_lon_5per_k2,two_lat_5per_k2) x11,y11 = fig(three_lon_5per_k2,three_lat_5per_k2) x12,y12 = fig(four_lon_5per_k2,four_lat_5per_k2) x13,y13 = fig(final_lon_5per_k2,final_lat_5per_k2) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k2,route1_lat_5per_k2) x15,y15 = fig(route2_lon_5per_k2,route2_lat_5per_k2) x16,y16 = fig(route3_lon_5per_k2,route3_lat_5per_k2) x17,y17 = fig(route4_lon_5per_k2,route4_lat_5per_k2) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_5per,circle_lat_err1_5per) x7,y7 = fig(circle_lon_err2_5per,circle_lat_err2_5per) #Add points after each hr x9,y9 = fig(first_lon_5per_k3,first_lat_5per_k3) x10,y10 = fig(two_lon_5per_k3,two_lat_5per_k3) x11,y11 = fig(three_lon_5per_k3,three_lat_5per_k3) x12,y12 = fig(four_lon_5per_k3,four_lat_5per_k3) x13,y13 = fig(final_lon_5per_k3,final_lat_5per_k3) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k3,route1_lat_5per_k3) x15,y15 = fig(route2_lon_5per_k3,route2_lat_5per_k3) x16,y16 = fig(route3_lon_5per_k3,route3_lat_5per_k3) x17,y17 = fig(route4_lon_5per_k3,route4_lat_5per_k3) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 2.5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_2per,circle_lat_err1_2per) x7,y7 = fig(circle_lon_err2_2per,circle_lat_err2_2per) #Add points after each hr x9,y9 = fig(first_lon_5per_k1,first_lat_5per_k1) x10,y10 = fig(two_lon_5per_k1,two_lat_5per_k1) x11,y11 = fig(three_lon_5per_k1,three_lat_5per_k1) x12,y12 = fig(four_lon_5per_k1,four_lat_5per_k1) x13,y13 = fig(final_lon_5per_k1,final_lat_5per_k1) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k1,route1_lat_5per_k1) x15,y15 = fig(route2_lon_5per_k1,route2_lat_5per_k1) x16,y16 = fig(route3_lon_5per_k1,route3_lat_5per_k1) x17,y17 = fig(route4_lon_5per_k1,route4_lat_5per_k1) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 2.5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_2per,circle_lat_err1_2per) x7,y7 = fig(circle_lon_err2_2per,circle_lat_err2_2per) #Add points after each hr x9,y9 = fig(first_lon_5per_k2,first_lat_5per_k2) x10,y10 = fig(two_lon_5per_k2,two_lat_5per_k2) x11,y11 = fig(three_lon_5per_k2,three_lat_5per_k2) x12,y12 = fig(four_lon_5per_k2,four_lat_5per_k2) x13,y13 = fig(final_lon_5per_k2,final_lat_5per_k2) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k2,route1_lat_5per_k2) x15,y15 = fig(route2_lon_5per_k2,route2_lat_5per_k2) x16,y16 = fig(route3_lon_5per_k2,route3_lat_5per_k2) x17,y17 = fig(route4_lon_5per_k2,route4_lat_5per_k2) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 2.5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_2per,circle_lat_err1_2per) x7,y7 = fig(circle_lon_err2_2per,circle_lat_err2_2per) #Add points after each hr x9,y9 = fig(first_lon_5per_k3,first_lat_5per_k3) x10,y10 = fig(two_lon_5per_k3,two_lat_5per_k3) x11,y11 = fig(three_lon_5per_k3,three_lat_5per_k3) x12,y12 = fig(four_lon_5per_k3,four_lat_5per_k3) x13,y13 = fig(final_lon_5per_k3,final_lat_5per_k3) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k3,route1_lat_5per_k3) x15,y15 = fig(route2_lon_5per_k3,route2_lat_5per_k3) x16,y16 = fig(route3_lon_5per_k3,route3_lat_5per_k3) x17,y17 = fig(route4_lon_5per_k3,route4_lat_5per_k3) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() percenterror1, percenterror2 = 0.05, 0.025 k1, k2, k3 = 0, 0.5, 0.99 #Wrapped Cauchy constants -- uniform, bell, point-like #5 percent error w/ different ks plane_hops_5per_k1 = [] plane_hops_5per_k2 = [] plane_hops_5per_k3 = [] #2.5 percent error w/ different ks plane_hops_2per_k1 = [] plane_hops_2per_k2 = [] plane_hops_2per_k3 = [] for i in xrange(N): #5% error runs plane_hops_5per_k1.append(five_hop_model_wrapped_cauchy(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k1,percenterror1)) plane_hops_5per_k2.append(five_hop_model_wrapped_cauchy(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k2,percenterror1)) plane_hops_5per_k3.append(five_hop_model_wrapped_cauchy(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k3,percenterror1)) #2.5% error runs plane_hops_2per_k1.append(five_hop_model_wrapped_cauchy(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k1,percenterror2)) plane_hops_2per_k2.append(five_hop_model_wrapped_cauchy(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k2,percenterror2)) plane_hops_2per_k3.append(five_hop_model_wrapped_cauchy(last_known_heading,pulauperak[1],pulauperak[0],km_hop,k3,percenterror2)) # 5per_k1 run first_lat_5per_k1 = [] two_lat_5per_k1 = [] three_lat_5per_k1 = [] four_lat_5per_k1 = [] final_lat_5per_k1 = [] first_lon_5per_k1 = [] two_lon_5per_k1 = [] three_lon_5per_k1 = [] four_lon_5per_k1 = [] final_lon_5per_k1 = [] route1_lat_5per_k1 = [] route2_lat_5per_k1 = [] route3_lat_5per_k1 = [] route4_lat_5per_k1 = [] route1_lon_5per_k1 = [] route2_lon_5per_k1 = [] route3_lon_5per_k1 = [] route4_lon_5per_k1 = [] for i in xrange(len(plane_hops_5per_k1)): first_lat_5per_k1.append(plane_hops_5per_k1[i][0][0]) first_lon_5per_k1.append(plane_hops_5per_k1[i][1][0]) two_lat_5per_k1.append(plane_hops_5per_k1[i][0][1]) two_lon_5per_k1.append(plane_hops_5per_k1[i][1][1]) three_lat_5per_k1.append(plane_hops_5per_k1[i][0][2]) three_lon_5per_k1.append(plane_hops_5per_k1[i][1][2]) four_lat_5per_k1.append(plane_hops_5per_k1[i][0][3]) four_lon_5per_k1.append(plane_hops_5per_k1[i][1][3]) final_lat_5per_k1.append(plane_hops_5per_k1[i][0][4]) final_lon_5per_k1.append(plane_hops_5per_k1[i][1][4]) route1_lat_5per_k1.append(plane_hops_5per_k1[i][0][5]) route1_lon_5per_k1.append(plane_hops_5per_k1[i][1][5]) route2_lat_5per_k1.append(plane_hops_5per_k1[i][0][6]) route2_lon_5per_k1.append(plane_hops_5per_k1[i][1][6]) route3_lat_5per_k1.append(plane_hops_5per_k1[i][0][7]) route3_lon_5per_k1.append(plane_hops_5per_k1[i][1][7]) route4_lat_5per_k1.append(plane_hops_5per_k1[i][0][8]) route4_lon_5per_k1.append(plane_hops_5per_k1[i][1][8]) # 5per_k2 run first_lat_5per_k2 = [] two_lat_5per_k2 = [] three_lat_5per_k2 = [] four_lat_5per_k2 = [] final_lat_5per_k2 = [] first_lon_5per_k2 = [] two_lon_5per_k2 = [] three_lon_5per_k2 = [] four_lon_5per_k2 = [] final_lon_5per_k2 = [] route1_lat_5per_k2 = [] route2_lat_5per_k2 = [] route3_lat_5per_k2 = [] route4_lat_5per_k2 = [] route1_lon_5per_k2 = [] route2_lon_5per_k2 = [] route3_lon_5per_k2 = [] route4_lon_5per_k2 = [] for i in xrange(len(plane_hops_5per_k2)): first_lat_5per_k2.append(plane_hops_5per_k2[i][0][0]) first_lon_5per_k2.append(plane_hops_5per_k2[i][1][0]) two_lat_5per_k2.append(plane_hops_5per_k2[i][0][1]) two_lon_5per_k2.append(plane_hops_5per_k2[i][1][1]) three_lat_5per_k2.append(plane_hops_5per_k2[i][0][2]) three_lon_5per_k2.append(plane_hops_5per_k2[i][1][2]) four_lat_5per_k2.append(plane_hops_5per_k2[i][0][3]) four_lon_5per_k2.append(plane_hops_5per_k2[i][1][3]) final_lat_5per_k2.append(plane_hops_5per_k2[i][0][4]) final_lon_5per_k2.append(plane_hops_5per_k2[i][1][4]) route1_lat_5per_k2.append(plane_hops_5per_k2[i][0][5]) route1_lon_5per_k2.append(plane_hops_5per_k2[i][1][5]) route2_lat_5per_k2.append(plane_hops_5per_k2[i][0][6]) route2_lon_5per_k2.append(plane_hops_5per_k2[i][1][6]) route3_lat_5per_k2.append(plane_hops_5per_k2[i][0][7]) route3_lon_5per_k2.append(plane_hops_5per_k2[i][1][7]) route4_lat_5per_k2.append(plane_hops_5per_k2[i][0][8]) route4_lon_5per_k2.append(plane_hops_5per_k2[i][1][8]) # 5per_k3 run first_lat_5per_k3 = [] two_lat_5per_k3 = [] three_lat_5per_k3 = [] four_lat_5per_k3 = [] final_lat_5per_k3 = [] first_lon_5per_k3 = [] two_lon_5per_k3 = [] three_lon_5per_k3 = [] four_lon_5per_k3 = [] final_lon_5per_k3 = [] route1_lat_5per_k3 = [] route2_lat_5per_k3 = [] route3_lat_5per_k3 = [] route4_lat_5per_k3 = [] route1_lon_5per_k3 = [] route2_lon_5per_k3 = [] route3_lon_5per_k3 = [] route4_lon_5per_k3 = [] for i in xrange(len(plane_hops_5per_k3)): first_lat_5per_k3.append(plane_hops_5per_k3[i][0][0]) first_lon_5per_k3.append(plane_hops_5per_k3[i][1][0]) two_lat_5per_k3.append(plane_hops_5per_k3[i][0][1]) two_lon_5per_k3.append(plane_hops_5per_k3[i][1][1]) three_lat_5per_k3.append(plane_hops_5per_k3[i][0][2]) three_lon_5per_k3.append(plane_hops_5per_k3[i][1][2]) four_lat_5per_k3.append(plane_hops_5per_k3[i][0][3]) four_lon_5per_k3.append(plane_hops_5per_k3[i][1][3]) final_lat_5per_k3.append(plane_hops_5per_k3[i][0][4]) final_lon_5per_k3.append(plane_hops_5per_k3[i][1][4]) route1_lat_5per_k3.append(plane_hops_5per_k3[i][0][5]) route1_lon_5per_k3.append(plane_hops_5per_k3[i][1][5]) route2_lat_5per_k3.append(plane_hops_5per_k3[i][0][6]) route2_lon_5per_k3.append(plane_hops_5per_k3[i][1][6]) route3_lat_5per_k3.append(plane_hops_5per_k3[i][0][7]) route3_lon_5per_k3.append(plane_hops_5per_k3[i][1][7]) route4_lat_5per_k3.append(plane_hops_5per_k3[i][0][8]) route4_lon_5per_k3.append(plane_hops_5per_k3[i][1][8]) # 2per_k1 run first_lat_2per_k1 = [] two_lat_2per_k1 = [] three_lat_2per_k1 = [] four_lat_2per_k1 = [] final_lat_2per_k1 = [] first_lon_2per_k1 = [] two_lon_2per_k1 = [] three_lon_2per_k1 = [] four_lon_2per_k1 = [] final_lon_2per_k1 = [] route1_lat_2per_k1 = [] route2_lat_2per_k1 = [] route3_lat_2per_k1 = [] route4_lat_2per_k1 = [] route1_lon_2per_k1 = [] route2_lon_2per_k1 = [] route3_lon_2per_k1 = [] route4_lon_2per_k1 = [] for i in xrange(len(plane_hops_2per_k1)): first_lat_2per_k1.append(plane_hops_2per_k1[i][0][0]) first_lon_2per_k1.append(plane_hops_2per_k1[i][1][0]) two_lat_2per_k1.append(plane_hops_2per_k1[i][0][1]) two_lon_2per_k1.append(plane_hops_2per_k1[i][1][1]) three_lat_2per_k1.append(plane_hops_2per_k1[i][0][2]) three_lon_2per_k1.append(plane_hops_2per_k1[i][1][2]) four_lat_2per_k1.append(plane_hops_2per_k1[i][0][3]) four_lon_2per_k1.append(plane_hops_2per_k1[i][1][3]) final_lat_2per_k1.append(plane_hops_2per_k1[i][0][4]) final_lon_2per_k1.append(plane_hops_2per_k1[i][1][4]) route1_lat_2per_k1.append(plane_hops_2per_k1[i][0][5]) route1_lon_2per_k1.append(plane_hops_2per_k1[i][1][5]) route2_lat_2per_k1.append(plane_hops_2per_k1[i][0][6]) route2_lon_2per_k1.append(plane_hops_2per_k1[i][1][6]) route3_lat_2per_k1.append(plane_hops_2per_k1[i][0][7]) route3_lon_2per_k1.append(plane_hops_2per_k1[i][1][7]) route4_lat_2per_k1.append(plane_hops_2per_k1[i][0][8]) route4_lon_2per_k1.append(plane_hops_2per_k1[i][1][8]) # 2per_k2 run first_lat_2per_k2 = [] two_lat_2per_k2 = [] three_lat_2per_k2 = [] four_lat_2per_k2 = [] final_lat_2per_k2 = [] first_lon_2per_k2 = [] two_lon_2per_k2 = [] three_lon_2per_k2 = [] four_lon_2per_k2 = [] final_lon_2per_k2 = [] route1_lat_2per_k2 = [] route2_lat_2per_k2 = [] route3_lat_2per_k2 = [] route4_lat_2per_k2 = [] route1_lon_2per_k2 = [] route2_lon_2per_k2 = [] route3_lon_2per_k2 = [] route4_lon_2per_k2 = [] for i in xrange(len(plane_hops_2per_k2)): first_lat_2per_k2.append(plane_hops_2per_k2[i][0][0]) first_lon_2per_k2.append(plane_hops_2per_k2[i][1][0]) two_lat_2per_k2.append(plane_hops_2per_k2[i][0][1]) two_lon_2per_k2.append(plane_hops_2per_k2[i][1][1]) three_lat_2per_k2.append(plane_hops_2per_k2[i][0][2]) three_lon_2per_k2.append(plane_hops_2per_k2[i][1][2]) four_lat_2per_k2.append(plane_hops_2per_k2[i][0][3]) four_lon_2per_k2.append(plane_hops_2per_k2[i][1][3]) final_lat_2per_k2.append(plane_hops_2per_k2[i][0][4]) final_lon_2per_k2.append(plane_hops_2per_k2[i][1][4]) route1_lat_2per_k2.append(plane_hops_2per_k2[i][0][5]) route1_lon_2per_k2.append(plane_hops_2per_k2[i][1][5]) route2_lat_2per_k2.append(plane_hops_2per_k2[i][0][6]) route2_lon_2per_k2.append(plane_hops_2per_k2[i][1][6]) route3_lat_2per_k2.append(plane_hops_2per_k2[i][0][7]) route3_lon_2per_k2.append(plane_hops_2per_k2[i][1][7]) route4_lat_2per_k2.append(plane_hops_2per_k2[i][0][8]) route4_lon_2per_k2.append(plane_hops_2per_k2[i][1][8]) # 2per_k3 run first_lat_2per_k3 = [] two_lat_2per_k3 = [] three_lat_2per_k3 = [] four_lat_2per_k3 = [] final_lat_2per_k3 = [] first_lon_2per_k3 = [] two_lon_2per_k3 = [] three_lon_2per_k3 = [] four_lon_2per_k3 = [] final_lon_2per_k3 = [] route1_lat_2per_k3 = [] route2_lat_2per_k3 = [] route3_lat_2per_k3 = [] route4_lat_2per_k3 = [] route1_lon_2per_k3 = [] route2_lon_2per_k3 = [] route3_lon_2per_k3 = [] route4_lon_2per_k3 = [] for i in xrange(len(plane_hops_2per_k3)): first_lat_2per_k3.append(plane_hops_2per_k3[i][0][0]) first_lon_2per_k3.append(plane_hops_2per_k3[i][1][0]) two_lat_2per_k3.append(plane_hops_2per_k3[i][0][1]) two_lon_2per_k3.append(plane_hops_2per_k3[i][1][1]) three_lat_2per_k3.append(plane_hops_2per_k3[i][0][2]) three_lon_2per_k3.append(plane_hops_2per_k3[i][1][2]) four_lat_2per_k3.append(plane_hops_2per_k3[i][0][3]) four_lon_2per_k3.append(plane_hops_2per_k3[i][1][3]) final_lat_2per_k3.append(plane_hops_2per_k3[i][0][4]) final_lon_2per_k3.append(plane_hops_2per_k3[i][1][4]) route1_lat_2per_k3.append(plane_hops_2per_k3[i][0][5]) route1_lon_2per_k3.append(plane_hops_2per_k3[i][1][5]) route2_lat_2per_k3.append(plane_hops_2per_k3[i][0][6]) route2_lon_2per_k3.append(plane_hops_2per_k3[i][1][6]) route3_lat_2per_k3.append(plane_hops_2per_k3[i][0][7]) route3_lon_2per_k3.append(plane_hops_2per_k3[i][1][7]) route4_lat_2per_k3.append(plane_hops_2per_k3[i][0][8]) route4_lon_2per_k3.append(plane_hops_2per_k3[i][1][8]) #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_5per,circle_lat_err1_5per) x7,y7 = fig(circle_lon_err2_5per,circle_lat_err2_5per) #Add points after each hr x9,y9 = fig(first_lon_5per_k1,first_lat_5per_k1) x10,y10 = fig(two_lon_5per_k1,two_lat_5per_k1) x11,y11 = fig(three_lon_5per_k1,three_lat_5per_k1) x12,y12 = fig(four_lon_5per_k1,four_lat_5per_k1) x13,y13 = fig(final_lon_5per_k1,final_lat_5per_k1) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k1,route1_lat_5per_k1) x15,y15 = fig(route2_lon_5per_k1,route2_lat_5per_k1) x16,y16 = fig(route3_lon_5per_k1,route3_lat_5per_k1) x17,y17 = fig(route4_lon_5per_k1,route4_lat_5per_k1) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_5per,circle_lat_err1_5per) x7,y7 = fig(circle_lon_err2_5per,circle_lat_err2_5per) #Add points after each hr x9,y9 = fig(first_lon_5per_k2,first_lat_5per_k2) x10,y10 = fig(two_lon_5per_k2,two_lat_5per_k2) x11,y11 = fig(three_lon_5per_k2,three_lat_5per_k2) x12,y12 = fig(four_lon_5per_k2,four_lat_5per_k2) x13,y13 = fig(final_lon_5per_k2,final_lat_5per_k2) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k2,route1_lat_5per_k2) x15,y15 = fig(route2_lon_5per_k2,route2_lat_5per_k2) x16,y16 = fig(route3_lon_5per_k2,route3_lat_5per_k2) x17,y17 = fig(route4_lon_5per_k2,route4_lat_5per_k2) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_5per,circle_lat_err1_5per) x7,y7 = fig(circle_lon_err2_5per,circle_lat_err2_5per) #Add points after each hr x9,y9 = fig(first_lon_5per_k3,first_lat_5per_k3) x10,y10 = fig(two_lon_5per_k3,two_lat_5per_k3) x11,y11 = fig(three_lon_5per_k3,three_lat_5per_k3) x12,y12 = fig(four_lon_5per_k3,four_lat_5per_k3) x13,y13 = fig(final_lon_5per_k3,final_lat_5per_k3) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k3,route1_lat_5per_k3) x15,y15 = fig(route2_lon_5per_k3,route2_lat_5per_k3) x16,y16 = fig(route3_lon_5per_k3,route3_lat_5per_k3) x17,y17 = fig(route4_lon_5per_k3,route4_lat_5per_k3) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 2.5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_2per,circle_lat_err1_2per) x7,y7 = fig(circle_lon_err2_2per,circle_lat_err2_2per) #Add points after each hr x9,y9 = fig(first_lon_5per_k1,first_lat_5per_k1) x10,y10 = fig(two_lon_5per_k1,two_lat_5per_k1) x11,y11 = fig(three_lon_5per_k1,three_lat_5per_k1) x12,y12 = fig(four_lon_5per_k1,four_lat_5per_k1) x13,y13 = fig(final_lon_5per_k1,final_lat_5per_k1) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k1,route1_lat_5per_k1) x15,y15 = fig(route2_lon_5per_k1,route2_lat_5per_k1) x16,y16 = fig(route3_lon_5per_k1,route3_lat_5per_k1) x17,y17 = fig(route4_lon_5per_k1,route4_lat_5per_k1) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 2.5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_2per,circle_lat_err1_2per) x7,y7 = fig(circle_lon_err2_2per,circle_lat_err2_2per) #Add points after each hr x9,y9 = fig(first_lon_5per_k2,first_lat_5per_k2) x10,y10 = fig(two_lon_5per_k2,two_lat_5per_k2) x11,y11 = fig(three_lon_5per_k2,three_lat_5per_k2) x12,y12 = fig(four_lon_5per_k2,four_lat_5per_k2) x13,y13 = fig(final_lon_5per_k2,final_lat_5per_k2) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k2,route1_lat_5per_k2) x15,y15 = fig(route2_lon_5per_k2,route2_lat_5per_k2) x16,y16 = fig(route3_lon_5per_k2,route3_lat_5per_k2) x17,y17 = fig(route4_lon_5per_k2,route4_lat_5per_k2) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show() #Set figure size fig = plt.figure(figsize=[30,20]) #Setup Basemap fig = Basemap(width=10000000,height=18000000,projection='lcc',resolution='c',lat_0=10,lon_0=90,suppress_ticks=True) #Draw coasts fig.drawcoastlines() #Draw boundary fig.drawmapboundary(fill_color='lightblue') #Fill background fig.fillcontinents(color='#FFD39B',lake_color='lightblue') #Draw parallels parallels = np.arange(lat_min,lat_max,lat_space) fig.drawparallels(np.arange(lat_min,lat_max,lat_space),labels=[1,1,0,1], fontsize=15) #Draw meridians meridians = np.arange(lon_min,lon_max,lon_space) fig.drawmeridians(np.arange(lon_min,lon_max,lon_space),labels=[1,1,0,1], fontsize=15) #Translate coords into map coord system to plot #Known 777 Locs x,y = fig(kualalumpur[1],kualalumpur[0]) #plotted as lon,lat NOT lat,lon -- watch out!! x2,y2 = fig(igariwaypoint[1],igariwaypoint[0]) x3,y3 = fig(pulauperak[1],pulauperak[0]) #Inmarsat Satellite Loc x4,y4 = fig(inmarsat[1],inmarsat[0]) #Add circle coords -- 2.5% error x5,y5 = fig(circle_lon,circle_lat) x6,y6 = fig(circle_lon_err1_2per,circle_lat_err1_2per) x7,y7 = fig(circle_lon_err2_2per,circle_lat_err2_2per) #Add points after each hr x9,y9 = fig(first_lon_5per_k3,first_lat_5per_k3) x10,y10 = fig(two_lon_5per_k3,two_lat_5per_k3) x11,y11 = fig(three_lon_5per_k3,three_lat_5per_k3) x12,y12 = fig(four_lon_5per_k3,four_lat_5per_k3) x13,y13 = fig(final_lon_5per_k3,final_lat_5per_k3) #Add ultimate locations of MH370 x14,y14 = fig(route1_lon_5per_k3,route1_lat_5per_k3) x15,y15 = fig(route2_lon_5per_k3,route2_lat_5per_k3) x16,y16 = fig(route3_lon_5per_k3,route3_lat_5per_k3) x17,y17 = fig(route4_lon_5per_k3,route4_lat_5per_k3) #Draw circle showing extent of Inmarsat sat radar detection fig.plot(x5,y5,'r-',markersize=5,label='5th Ping') fig.plot(x6,y6,'r--',markersize=5,label='with 5% error') fig.plot(x7,y7,'r--',markersize=5) #Plot coords w/ filled circles fig.plot(x,y,'bo',markersize=10,label='MH370 Flight Path') fig.plot(x2,y2,'bo',markersize=10) fig.plot(x3,y3,'go',markersize=10,label='MH370 Last Known Coords') fig.plot(x4,y4,'ro',markersize=10,label='Inmarsat 3-F1') #Add monte carlo points fig.plot(x9,y9,'yo',markersize=5,label='after 1 hr') fig.plot(x10,y10,'co',markersize=5,label='after 2 hrs') fig.plot(x11,y11,'mo',markersize=5,label= 'after 3 hrs') fig.plot(x12,y12,'wo',markersize=5,label='after 4 hrs') fig.plot(x13,y13,'ro',markersize=7,label='after 5 hrs') #Plot ultimate locations of MH370 fig.plot(x14,y14,'bo',markersize=5,label='in final hr') fig.plot(x15,y15,'bo',markersize=5) fig.plot(x16,y16,'bo',markersize=5) fig.plot(x17,y17,'bo',markersize=5) #Draw arrows showing flight path arrow1 = plt.arrow(x,y,x2-x,y2-y,linewidth=3,color='blue',linestyle='dashed',label='flight path') arrow2 = plt.arrow(x2,y2,x3-x2,y3-y2,linewidth=3,color='blue',linestyle='dashed',label='flight path') #Make legend legend = plt.legend(loc='upper right',fontsize=10,frameon=True,title='Legend',markerscale=1,prop={'size':15}) legend.get_title().set_fontsize('20') #Add title plt.title('MH370 Position Progression Over Time', fontsize=30) #Show below plt.show()