/// <summary> /// 对每个月文件夹下的日拼接产品数据进行旬的周期合成 /// </summary> /// <param name="tendir"></param> /// <param name="regionFiles"></param> private void ComputeTenPeriodSyn(string setname, string dirXun, Dictionary <string, List <string> > regionFiles, RasterStatics sta, string resl, Action <int, string> progressCallback, string label = "day") { DateTime datebegion, dateend; foreach (string region in regionFiles.Keys) { StringBuilder filePrefixXun = new StringBuilder(); filePrefixXun.AppendFormat("{0}_{1}_{2}_Ten_", setname, _dataOrigin, region); string[] parafiles = regionFiles[region].ToArray(); DayFileWithDate[] newDays = MarkDate(parafiles, out datebegion, out dateend); int year = datebegion.Year, month = datebegion.Month; for (int ten = 1; ten <= 3; ++ten) { //得到每个xun的起始和终止日期 DateTime xunBegin = new DateTime(year, month, (ten - 1) * 10 + 1); DateTime xunEnd = new DateTime(year, month, (ten == 3) ? DateTime.DaysInMonth(year, month) : (ten * 10)); //对于每一个xun,查询其对应的日产品文件 IEnumerable <DayFileWithDate> query = from newDay in newDays where newDay.date.CompareTo(xunBegin) >= 0 && newDay.date.CompareTo(xunEnd) <= 0 select newDay; if (query.Count <DayFileWithDate>() != 0) { DayFileWithDate[] newDaysSelect = query.ToArray <DayFileWithDate>(); string[] filesSelect = DayFileWithDate.GetFiles(newDaysSelect); StringBuilder outnamePrefix = new StringBuilder(); outnamePrefix.Append(filePrefixXun.ToString()).Append(year).Append("-").Append(month.ToString("D2")).Append("-").Append(ten); //统计开始 StatisticTen(dirXun, outnamePrefix, filesSelect, sta, resl, label); } } } }
/// <summary> /// 对每个月文件夹下的日拼接产品数据进行旬的周期合成 /// </summary> /// <param name="tendir"></param> /// <param name="regionFiles"></param> private void ComputeTenPeriodSyn(string setname, string dirXun, Dictionary <string, List <string> > regionFiles, RasterStatics sta, string resl, Action <int, string> progressCallback, string label = "day") { DateTime datebegion, dateend; foreach (string region in regionFiles.Keys) { if (!_con.QueryRegionID(region.ToLower(), out _regionID)) { if (progressCallback != null) { progressCallback(-1, "\t\t查询" + region + "区域的ID失败!"); } return; } if (_regionID == 0) { _regionID = 1; } StringBuilder filePrefixXun = new StringBuilder(); filePrefixXun.AppendFormat("{0}_{1}_{2}_Ten_", setname, _dataOrigin, region); string[] parafiles = regionFiles[region].ToArray(); DayFileWithDate[] newDays = MarkDate(parafiles, out datebegion, out dateend, progressCallback); int year = datebegion.Year, month = datebegion.Month; string[] tenNO = new string[3] { "上", "中", "下" }; for (int ten = 1; ten <= 3; ++ten) { if (progressCallback != null) { progressCallback(-1, "\t\t\t开始合成" + region + "区域的" + tenNO [ten - 1] + "旬产品..."); } //得到每个xun的起始和终止日期 DateTime xunBegin = new DateTime(year, month, (ten - 1) * 10 + 1); DateTime xunEnd = new DateTime(year, month, (ten == 3) ? DateTime.DaysInMonth(year, month) : (ten * 10)); //对于每一个xun,查询其对应的日产品文件 IEnumerable <DayFileWithDate> query = from newDay in newDays where newDay.date.CompareTo(xunBegin) >= 0 && newDay.date.CompareTo(xunEnd) <= 0 select newDay; if (query.Count <DayFileWithDate>() != 0) { DayFileWithDate[] newDaysSelect = query.ToArray <DayFileWithDate>(); string[] filesSelect = DayFileWithDate.GetFiles(newDaysSelect); StringBuilder outnamePrefix = new StringBuilder(); outnamePrefix.Append(filePrefixXun.ToString()).Append(year).Append("-").Append(month.ToString("D2")).Append("-").Append(ten); //统计开始 StatisticTen(dirXun, outnamePrefix, filesSelect, sta, resl, label, progressCallback); } else { if (progressCallback != null) { progressCallback(-1, "\t\t\t未找到符合" + region + "区域的" + tenNO[ten - 1] + "旬的数据!"); } } } } }
/// <summary> /// 从日产品文件提取日期信息 /// </summary> /// <param name="dayPrds"></param> /// <returns></returns> private static DayFileWithDate[] MarkDate(string[] dayPrds, out DateTime datebegin, out DateTime dateend) { datebegin = DateTime.Now; dateend = DateTime.MinValue; DayFileWithDate[] newDays = new DayFileWithDate[dayPrds.Length]; for (int i = 0; i < dayPrds.Length; ++i) { newDays[i].path = dayPrds[i]; //CldFrcTot_MOD06_china_日产品_20131204.LDF string[] splitsAll = Path.GetFileNameWithoutExtension(dayPrds[i]).Split('_'); newDays[i].date = DateTime.ParseExact(splitsAll[4], "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); if (newDays[i].date > dateend) { dateend = newDays[i].date; } if (newDays[i].date < datebegin) { datebegin = newDays[i].date; } } return(newDays); }