/// <summary> /// 将相同列合并到一个表格中,标题以不同表名称命名。 /// </summary> /// <param name="indexes"></param> /// <param name="colNames"></param> /// <param name="tableNamePostfix"></param> /// <returns></returns> public ObjectTableManager GetSameColAssembledTableManager(List <object> indexes, List <string> colNames, string tableNamePostfix = "") { var indexColName = this.GetIndexColName(); ObjectTableManager newManger = new ObjectTableManager(this.OutputDirectory); //建立表格 foreach (var oldColName in colNames) { if (indexColName.Equals(oldColName, StringComparison.CurrentCultureIgnoreCase)) { continue; } var newTableName = oldColName; if (!String.IsNullOrWhiteSpace(tableNamePostfix)) { newTableName = TableNameHelper.BuildName(oldColName, tableNamePostfix, true); } newManger.AddTable(newTableName); } //填充数据 foreach (var indexVal in indexes) //逐历元 { foreach (var oldColName in colNames) //逐新表 { if (indexColName.Equals(oldColName, StringComparison.CurrentCultureIgnoreCase)) { continue; } var newTable = newManger.Get(oldColName); newTable.NewRow(); newTable.AddItem(indexColName, indexVal); foreach (var oldTableName in this.Keys) // 逐新表列, 逐老表 { var oldTable = this[oldTableName]; if (!oldTable.ParamNames.Contains(oldColName)) { continue; } var val = oldTable[indexVal, oldColName]; if (val != null) { var colName = TableNameHelper.ParseName(oldTableName); newTable.AddItem(colName, val); } } newTable.EndRow(); } } return(newManger); }
void TimeLooper_Looping(Time Time) { log.Info("正在计算 " + Time); ObjectTableManager TableManager = new Geo.ObjectTableManager(OutputDirectory); var Table = TableManager.AddTable(FileNamePrefix + "_DOPS_at_" + Geo.Utils.DateTimeUtil.GetDateTimePathString(Time.DateTime)); GeoGridLooper NewGeoGridLooper = GeoGridLooper.Clone(); var DopCaculator = new DopCaculator(EphemerisService, EnabledPrns, CutOffAngle, SatWeights); NewGeoGridLooper.Looping += new Action <LonLat>(delegate(LonLat geo) { NewGeoGridLooper.IsCancel = GeoGridLooper.IsCancel; var geoCoord = new GeoCoord(geo.Lon, geo.Lat, 10); Build(DopCaculator, Table, Time, geoCoord, IsSimpleModel); }); NewGeoGridLooper.Init(); NewGeoGridLooper.Run(); TableManager.WriteAllToFileAndCloseStream(); log.Info("计算完毕 " + Time); }