次のプログラムを実行するとエラーになってしまい、原因および治し方を教えてください。
python
1def vCAL_RHO(p1s, p2): 2 ra = 6378.140 3 rb = 6356.755 4 F = (ra - rb)/ra 5 rad_A = np.radians(p1s) 6 rad_B = np.radians(p2) 7 pA = np.arctan(rb/ra*np.tan(rad_A[:, 0])) 8 pB = np.arctan(rb/ra*np.tan(rad_B[0])) 9 xx = np.arccos(np.sin(pA)*np.sin(pB) + np.cos(pA)*np.cos(pB)*np.cos(rad_A[:, 1] - rad_B[1])) 10 c1 = (np.sin(xx) - xx)*(np.sin(pA) + np.sin(pB))**2/np.cos(xx/2)**2 11 c2 = (np.sin(xx) + xx)*(np.sin(pA) - np.sin(pB))**2/np.sin(xx/2)**2 12 dr = F/8*(c1 - c2) 13 rho = ra*(xx + dr) 14 return rho 15 16 17if __name__ == '__main__': 18 19##SQLサーバーにつないでデータ取得 20 21 query = text("""select lat,lon from tmp.test1""") 22 result = engine.execute(query) 23 result = result.fetchall() 24 25 query2 = text("""select lat,lon from tmp.test2""") 26 result2 = engine.execute(query2) 27 result2 = result2.fetchall() 28 29 points=[] 30 base_points=[] 31 32 for u in result: 33 p = [float(u[0]),float(u[1])] 34 points.append(p) 35 36 for u in result2: 37 p = [float(u[0]),float(u[1])] 38 base_points.append(p) 39 40 points = np.array(points) 41 base_points = np.array(base_points) 42 43##2点間の距離計算の処理開始 44 centers = [] 45 for _ in range(3): 46 mcnt = 0 47 best = 0 48 mcovered = None 49 for i, bp in enumerate(base_points): 50 dist = vCAL_RHO(points, bp) 51 covered = dist < 50. 52 cnt = np.sum(covered) 53 if cnt > mcnt: 54 mcovered = covered 55 mcnt = cnt 56 best = i 57 centers.append(base_points[best]) 58 points = points[np.logical_not(mcovered)] 59 60 centers = np.array(centers) 61 fig, ax = plt.subplots(dpi=100) 62 ax.set_aspect('equal') 63 ax.scatter(points[:, 0], points[:, 1], s=10) 64 ax.scatter(centers[:, 0], centers[:, 1], c='red', s=15**2) 65 plt.show()
エラー内容
クエリの返り値がないときに、pointsがnp.array([[]])のときではないかと考えております。
治し方もわからず教えてください。
python
1IndexError Traceback (most recent call last) 2<ipython-input-3-961842822e4d> in <module>() 3 102 mcovered = None 4 103 for i, bp in enumerate(base_points): 5--> 104 dist = vCAL_RHO(points, bp) 6 105 covered = dist < 50. 7 106 cnt = np.sum(covered) 8 9<ipython-input-3-961842822e4d> in vCAL_RHO(p1s, p2) 10 39 rad_A = np.radians(p1s) 11 40 rad_B = np.radians(p2) 12---> 41 pA = np.arctan(rb/ra*np.tan(rad_A[:, 0])) 13 42 pB = np.arctan(rb/ra*np.tan(rad_B[0])) 14 43 xx = np.arccos(np.sin(pA)*np.sin(pB) + np.cos(pA)*np.cos(pB)*np.cos(rad_A[:, 1] - rad_B[1])) 15 16IndexError: index 0 is out of bounds for axis 1 with size 0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。