Ejemplo n.º 1
0
    /// <summary>
    /// 获得雷达反演每日雨量数据
    /// </summary>
    /// <param name="startDate"></param>
    /// <param name="endDate"></param>
    /// <returns></returns>
    public static List <rfInfo> GetRadarRf(DateTime startDate, DateTime endDate)
    {
        var rfList = new List <rfInfo>();
        List <DataTable> dsList = GetRfByDates(startDate, endDate);

        if (dsList != null && dsList.Count > 0)
        {
            foreach (DataRow row in dsList[0].Rows)
            {
                var temInfo = new rfInfo();
                temInfo.STCD = Convert.ToString(row.ItemArray[0]);
                temInfo.Lon  = Convert.ToDouble(row.ItemArray[1]);
                temInfo.Lat  = Convert.ToDouble(row.ItemArray[2]);

                if (Convert.IsDBNull(row.ItemArray[3]))
                {
                    temInfo.Rainfall = 0;
                }
                else
                {
                    temInfo.Rainfall = Convert.ToDouble(row.ItemArray[3]);
                }

                rfList.Add(temInfo);
            }
        }
        return(rfList);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 查询累积雨量,获取相关观测点信息
    /// </summary>
    /// <param name="startDate">起始时间</param>
    /// <param name="endDate">中止时间</param>
    /// <returns>站点相关信息列表,包括经纬度以及累积雨量值</returns>
    public static List <rfInfo> GetAccRadarRf(DateTime startDate, DateTime endDate)
    {
        var rfList              = new List <rfInfo>();
        var rfoldList           = new List <rfInfo>();
        List <DataTable> dsList = GetRfByDates(startDate, endDate);

        if (dsList == null || dsList.Count == 0)
        {
            return(null);
        }

        List <decimal> temRainfall = new List <decimal>();
        List <string>  stcdlist    = new List <string>();

        for (int i = 0; i < dsList.Count; i++)
        {
            for (int j = 0; j < dsList[i].Rows.Count; j++)
            {
                string stcdID = dsList[i].Rows[j].ItemArray[0].ToString();
                if (!stcdlist.Contains(stcdID))
                {
                    stcdlist.Add(stcdID);
                    var temInfo = new rfInfo();
                    temInfo.STCD = stcdID;
                    temInfo.Lon  = Convert.ToDouble(dsList[i].Rows[j].ItemArray[1]);
                    temInfo.Lat  = Convert.ToDouble(dsList[i].Rows[j].ItemArray[2]);
                    if (Convert.IsDBNull(dsList[i].Rows[j].ItemArray[3]))
                    {
                        temRainfall.Add(0);
                    }
                    else
                    {
                        temRainfall.Add(Math.Round(Convert.ToDecimal(dsList[i].Rows[j].ItemArray[3]), 2));
                    }
                    rfoldList.Add(temInfo);
                }
                else
                {
                    var     indexSTCD   = stcdlist.IndexOf(stcdID);
                    var     oldRainFall = temRainfall[indexSTCD];
                    decimal nowRainFall = 0;
                    if (Convert.IsDBNull(dsList[i].Rows[j].ItemArray[3]))
                    {
                        nowRainFall = 0;
                    }
                    else
                    {
                        nowRainFall = Math.Round(Convert.ToDecimal(dsList[i].Rows[j].ItemArray[3]), 2);
                    }

                    temRainfall[indexSTCD] = oldRainFall + nowRainFall;
                }
            }
        }

        for (int j = 0; j < stcdlist.Count; j++)
        {
            var temInfo = new rfInfo();
            temInfo.STCD     = Convert.ToString(rfoldList[j].STCD);
            temInfo.Lon      = Convert.ToDouble(rfoldList[j].Lon);
            temInfo.Lat      = Convert.ToDouble(rfoldList[j].Lat);
            temInfo.Rainfall = Convert.ToDouble(temRainfall[j]);
            rfList.Add(temInfo);
        }
        return(rfList);
    }