/// <summary> /// Pointクラスのテスト /// <para>NMEAファイルから測位点情報を読み出し、KMLへPoint情報として出力します。</para> /// </summary> public static void ReadNmeaToKmlPoint() { NmeaReader reader = new NmeaReader(); reader.OpenWithDialog(); // NMEAファイル読み出し if (reader.IsOpen) { Blh[] pos = reader.GetPositions(); // 測位情報のうちから位置座標のみを取得 DateTime[] times = reader.GetDateTimes(); // 測位情報から時刻情報のみを取得 if (pos.Length != 0 && times.Length != 0) { Point point = new Point(pos[0], Icon.shaded_dot); point.description = reader.FileName; point.AddDescription("0"); point.AddDescription(pos[0].ToString()); point.AddDescription(times[0].ToString()); point.Time = new KML.Time.TimeStamp(times[0]); if (pos.Length >= 1 && times.Length >= 1) { for (int i = 1; i < pos.Length && i < times.Length; i++) { if (!(pos[i].B == 0.0 && pos[i].L == 0.0)) // 未測位分は除く…最初の奴は例外(対処しようとすると結構長くなる) { Point p = new Point(pos[i]); p.description = i.ToString(); p.AddDescription(pos[i].ToString()); p.AddDescription(times[i].ToString()); p.Time = new KML.Time.TimeStamp(times[i]); point.Add(p); } } } // ファイル出力 // KML出力はUTF8で出力してください。 using (System.IO.StreamWriter fwriter = new System.IO.StreamWriter("NMEAtoPoint.kml", false, Encoding.UTF8)) { try { fwriter.Write(point.GetKmlCode()); } catch { // エラー処理があれば記述 } } } } return; }