/* プロパティ **********************************************************/ /* メソッド **********************************************************/ /// <summary> /// ファイルを読み込み、マップ情報を返す /// </summary> /// <param name="fileNames">ファイル名</param> /// <returns>マップ情報<para>圧縮ファイルの場合、一つのファイルに多数のマップが格納されている場合があるのでListで返します。</para></returns> public List<DemSet> ReadHeader(string[] fileNames) { List<DemSet> mapInfolist = new List<DemSet>(); //System.Diagnostics.Stopwatch sw = System.Diagnostics.Stopwatch.StartNew(); // ヘッダーの読み出し Info[] info = new Info[fileNames.Length]; if (fileNames.Length == 1) // ファイルが単一であれば、Parallel処理はかえって重いので分ける { JpgisGmlReader reader = new JpgisGmlReader(); info[0] = reader.GetHeader(fileNames[0]); } else { Parallel.For(0, fileNames.Length, i => //for(int i = 0; i < fileNames.Length; i++) // 66 ファイルあると、forよりも並列読み込みの方が若干早い。@2012/5/28 { //System.Diagnostics.Stopwatch sw2 = System.Diagnostics.Stopwatch.StartNew(); JpgisGmlReader reader = new JpgisGmlReader(); info[i] = reader.GetHeader(fileNames[i]); //sw2.Stop(); // ストップウォッチを止める //Console.WriteLine("個々のヘッダー読み込み時間: " + sw2.Elapsed); // 結果を表示する }); } //sw.Stop(); // ストップウォッチを止める //Console.WriteLine("合計のヘッダー読み込み時間: " + sw.Elapsed); // 結果を表示する for (int i = 0; i < fileNames.Length; i++) { if (info[i].Available == true) mapInfolist.Add(new DemSet(fileNames[i], info[i])); } return mapInfolist; }
/// <summary> /// 引数のマップ情報を利用してマップを読み込む /// </summary> /// <param name="fileName">ファイル名</param> /// <param name="info">ファイルに含まれているDEMの情報</param> /// <returns>マップのインスタンス</returns> public MapDem ReadMap(string fileName, Info info) { // マップ情報を読み出す float[,] height = null; switch (info.MapModel) { case Model.JPGIS2x_GML: JpgisGmlReader reader = new JpgisGmlReader(); height = reader.GetValues(fileName, info.Size); break; } MapDem map = null; if (height != null) { map = new MapDem(info.Field); map.SetMapData(height); } return map; }