/// <summary> taegetDir以下のファイルから計測データを抜き出し、MeasuredValue型のリストを返す </summary> public List <MeasuredValue> CollectInspectedValues(InspectItem inspects, string targetDir) { //指定フォルダ以下のファイルを取得する (フォルダ内のxmlファイルをリストに格納) var getfiles = new FileUtil(); var fnames = getfiles.GetXmlFiles(targetDir); //answersの作成 var answers = new List <MeasuredValue>(); //fnameの各ファイルごとに{}内の処理を繰り返しリストの作成 foreach (var fname in fnames) { //ファイル名の取得 var getFileName = Path.GetFileName(fname); //パーセプトロンの解析結果を得る var data = CPerceptronData.LoadFromFile(fname, true); //注目測定点名・項目を元にデータを取得し、MeasuredValue型で返す foreach (var element in inspects.Inspects) { foreach (var item in inspects.Items) { CInspectionCharacteristic outInspect; if (CPerceptronData.IsContains(data, element, item, out outInspect)) { //容器(anser)を作成 var answer = new MeasuredValue(); var absoluteAns = 0d; //指定した測定点・項目を元にabsoluteを返す var itemAbsolute = outInspect.Measurement.abusolute; //リストに値を格納 answer.Fname = getFileName; answer.Inspect = element; answer.Item = item; answer.Value = double.TryParse(itemAbsolute, out absoluteAns) ? absoluteAns : double.NaN; answers.Add(answer); } } } } return(answers); }
private static void Main(string[] args) { //注目測定点名と注目計測名と項目が書かれたファイルのアドレス var csvFilePath = @"C:\Users\hayashi\Documents\Visual Studio 2015\Projects\CodeTestSpace\insepectionData\settingData.CSV"; //特殊計算と対象が書かれたファイルのアドレス var csvCalcPath = @"C:\Users\hayashi\Documents\Visual Studio 2015\Projects\CodeTestSpace\insepectionData\calcSettingData.CSV"; //処理対象のフォルダのアドレス var basePath = @"C:\Users\hayashi\Documents\Visual Studio 2015\Projects\CodeTestSpace\testdata\"; //結果ファイル保存先のアドレス var saveDataPath = @"C:\Users\hayashi\Documents\Visual Studio 2015\Projects\CodeTestSpace\output\result.csv"; //結果保持用 var resultCalcMeanDev = new List <List <CalcValue> >(); var resultSpCalcMeanDev = new List <List <SpCalcMeanDev> >(); //注目測定点名と注目計測名と項目をファイルから読み込む //例 //ST1_SF01 (注目測定点名) //CubeHole1,CubeHole2 (注目計測名) //X Y ...等(項目) //注目計測名、項目は可変数 var institem = new InspectItem(); var inspectItems = institem.LoadConfiguration(csvFilePath); //特殊計算内容をファイルから読み込む //例: //distance,CubeHole1,CubeHole2 //特殊計算内容は可変とする var instSetting = new CalcSetting(); var calcSetting = instSetting.LoadConfiguration(csvCalcPath); foreach (var inspectItem in inspectItems) { //指定フォルダ以下のファイルを取得する //注目測定点名と合致するファイルを更にコレクトする //コレクトしたファイルから、注目計測名と注目測定名のデータを収集する var instData = new MeasuredValue(); var measuredValues = instData.CollectInspectedValues(inspectItem, basePath); //各注目測定点名ごとの平均と標準偏差を求める var instDataMeanDev = new CalcValue(); var calcMeanDev = instDataMeanDev.CalcMeanDev(inspectItem, measuredValues); resultCalcMeanDev.Add(calcMeanDev); //特殊計算を求める var instSpCalc = new SpCalcValue(); var spCalc = instSpCalc.SellectSpCalc(calcSetting, measuredValues); //特殊計算の平均と標準偏差を求める var instDataSpCalcMeanDev = new SpCalcMeanDev(); var spCalcMeanDev = instDataSpCalcMeanDev.CalcMeanDev(calcSetting, spCalc); resultSpCalcMeanDev.Add(spCalcMeanDev); //結果をファイルに保存する var saveDatas = new FileUtil(); saveDatas.SaveDatas(saveDataPath, calcMeanDev, spCalcMeanDev); } }