csvを読み込んで座標変換してグラフ化(3次元)
ちょっとマニアックだが…ecef座標系をENU(EAST-NORTH-UP)座標に変換するpythonプログラムを使って
移動経路などを3次元プロットするプログラム。
例えばGPSから得たECEF座標から基準点を原点として飛行経路を描くときに使えます。
5行目に出てくるecef_enuというプログラムは別の記事を参照。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D #3次元でプロットする機能 import ecef_enu as e2e #作成プログラムからimport ecef→enuに座標変換 df1 = pd.read_csv('***.csv') #csvをreadする xyz1 = df1[['ecef_x[m]','ecef_y[m]','ecef_z[m]']].values arr1 = np.empty((0,3)) #配列用のメモリを確保する。 orign = np.array([-3957314.622,3310254.134,3737540.044]) #基準位置 #ecef座標をenuに変換して、for文で変換結果を行追加していく for i1 in range(df1.shape[0]): enu1 = e2e.ecef2enu(xyz1[i1],orign) enu_xyz1 = enu1.reshape(1,3) arr1 = np.append(arr1,enu_xyz1,axis=0) enux1 = arr1[:,0] enuy1 = arr1[:,1] enuz1 = arr1[:,2] #結果を3次元でプロット fig = plt.figure() ax = Axes3D(fig) ax.scatter(enux1,enuy1,enuz1,color='b',alpha=1,label="****",s=5) plt.legend() plt.show()