以前話した通り,FSXのフライトプラン作成はPlan-Gを使っているのだが,特にSID中のWaypointのデータがなく,手動で緯度と経度を入力しなければいけないものがあった.
Plan-Gをよくよく見てみると,データベースにユーザーがウェイポイントをインポートできる機能があった.
これはいい,ということでCSVファイルを作ってインポートしてみたのだが,思ったのと違う場所にウェイポイントが作成される.
何度やってもうまくいかないので色々調べた結果,AIS JAPAN等で見ることのできるデータはxx度y分z秒の形式なのに対し,Plan-Gで扱うのはxx.q度の形式になるらしい.
どういうことかというと,例えば東経132度30分という地点は,132.5度と入力しなければならないということ.
計算としては分の部分を60で割ってやればいいわけだが(秒まで考えると計算が面倒),手計算でいちいちやるのは面倒ということでCSVファイルをPythonで一括変換することに.
import csv from math import modf import os.path def inputFilepath(): path = raw_input("Where is the csv file?") return path def convert(path): f1 = open(path, 'rb') dataReader = csv.reader(f1) result = [] #convert for r in dataReader: lat = float(r[3]) #latitude int.min.sec lon = float(r[4]) #longitude int.min.sec #緯度 lat_minsec, lat_int=modf(lat) lat_dec = lat_minsec / 0.6 new_lat = lat_int + lat_dec #経度 lon_minsec, lon_int = modf(lon) lon_dec = lon_minsec / 0.6 new_lon = lon_int + lon_dec r[3] = new_lat r[4] = new_lon result.append(r) f1.close() #write filename, ext = os.path.splitext(path) new_path = filename + '_converted.csv' f2 = open(new_path, 'w') writer = csv.writer(f2, lineterminator='\n') writer.writerows(result) f2.close() path = inputFilepath() convert(path)
本当は分と秒のところを分けてそれぞれ割って…としなければならないのだが,だいたいの場所が分かればいいということでとりあえず分だけで.
Plan-Gのインポートフォーマットに合ったCSVデータを突っ込むと緯度と経度のところをPlan-Gで正しく読み込める形式に変換してくれる.
0 件のコメント:
コメントを投稿