Example #1
0
        /// <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;
        }