コード例 #1
0
        /// <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);
                    }
                }
            }
        }
コード例 #2
0
ファイル: PeriodicComputeAlg.cs プロジェクト: windygu/hispeed
        /// <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] + "旬的数据!");
                        }
                    }
                }
            }
        }