Exemplo n.º 1
0
        /// <summary>
        /// 得到指标的数据结构
        /// </summary>
        /// <returns></returns>
        public DataTable getZhiBiao(ArrayList arrData, int city_id, DateTime date, string strTime)
        {
            try
            {
                DataTable dt      = new DataTable();
                int       row     = 0;
                int       columns = 0;
                for (int i = 0; i < arrData.Count; i++)
                {
                    clsResult      cls     = arrData[i] as clsResult;
                    List <clsData> clsData = cls.LsData;
                    if (clsData.Count <= 0)
                    {
                        continue;
                    }
                    //string Test = string.Empty;
                    string strWhere = string.Empty;
                    for (int j = 0; j < clsData.Count; j++)
                    {
                        row     = clsData[j].Row;
                        columns = clsData[j].Column;
                        string strJoin = clsData[j].XYZUOBIAO;
                        if (strWhere.Length > 0)
                        {
                            strWhere = strWhere + "," + strJoin;
                        }
                        else
                        {
                            strWhere = strJoin;
                        }
                    }
                    strSQL = string.Format(@"select {3} as columnss,{4} as rowss,sum(voice_call_num) as voice_call_num ,
                                        sum(voice_drop_num) as voice_drop_num,
                                        sum(data_call_num) as data_call_num,sum(data_drop_num) as data_drop_num,
                                        sum(DODATA_CALL_NUM) as DODATA_CALL_NUM
                                        from mod_cdl_grid where GRID_ID in ({0}) and city_id={1} 
                                        and {2} group by start_time ", strWhere, city_id, strTime, columns, row);

                    DataTable tempdt = NOAP.CommonDB.DBAcess.Instance().GetDataTable(strSQL); //获取临时的数据结构的值
                    clsPerf.BuildDataTable(ref dt, tempdt);                                   //数据结构上传数据
                }
                return(dt);
            }
            catch (Exception ex)
            {
                clsTool.WriteLog(ex.Message + ex.StackTrace, "getZhiBiao");
                return(null);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 有多少个小格存在于大格中
        /// </summary>
        /// <returns></returns>
        public DataTable htgetsmallExistBig(Hashtable ht, List <clsPoi> clsPoi)
        {
            try
            {
                DataTable dt1 = new DataTable();

                dt1.Columns.Add(new DataColumn("col"));
                dt1.Columns.Add(new DataColumn("row"));
                dt1.Columns.Add(new DataColumn("voice_call_num"));
                dt1.Columns.Add(new DataColumn("data_call_num"));
                dt1.Columns.Add(new DataColumn("voice_drop_num"));
                dt1.Columns.Add(new DataColumn("data_drop_num"));
                dt1.Columns.Add(new DataColumn("DODATA_CALL_NUM"));

                foreach (clsPoi t in clsPoi)
                {
                    //遍历查找功能函数。确定有多少格子在这个大格子中(callnum;dropnum)
                    clsResult cls = new clsResult();
                    cls.LsData = new List <clsData>();
                    clsPoi clsP = t as clsPoi;
                    if (ht.ContainsKey(clsP.longitudeandlatitude))
                    {
                        clsData newcls = ht[clsP.longitudeandlatitude] as clsData;
                        if (newcls == null)
                        {
                            continue;
                        }

                        DataRow dr = dt1.NewRow();
                        dr["col"] = clsP.Column;
                        dr["row"] = clsP.Row;

                        dr["voice_call_num"]  = newcls.Voice_call_num;
                        dr["data_call_num"]   = newcls.Data_call_num;
                        dr["voice_drop_num"]  = newcls.Voice_drop_num;
                        dr["data_drop_num"]   = newcls.Data_drop_num;
                        dr["DODATA_CALL_NUM"] = newcls.DODATA_CALL_NUM;
                        dt1.Rows.Add(dr);
                    }
                }
                return(dt1);
            }
            catch (Exception ex)
            {
                clsTool.WriteLog(ex.Message + ex.StackTrace, "getsmallExistBig大格子里有多少个小格子");
                return(null);
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 有多少个小格存在于大格中
        /// </summary>
        /// <returns></returns>
        public DataTable newgetsmallExistBig(DataTable dt, List <clsPoi> clsPoi,
                                             int XLength, int YLength, int city_id,
                                             DateTime date, string strTime, float minlongitude, float maxlongitude)
        {
            try
            {
                string    result = string.Empty;
                DataTable dt1    = new DataTable();

                dt1.Columns.Add(new DataColumn("col"));
                dt1.Columns.Add(new DataColumn("row"));
                dt1.Columns.Add(new DataColumn("voice_call_num"));
                dt1.Columns.Add(new DataColumn("voice_drop_num"));
                dt1.Columns.Add(new DataColumn("data_call_num"));
                dt1.Columns.Add(new DataColumn("data_drop_num"));
                dt1.Columns.Add(new DataColumn("DODATA_CALL_NUM"));

                //查找功能函数
                for (int kk = 0; kk < dt.Rows.Count; kk++)
                {
                    for (int i = 0; i < clsPoi.Count; i++)   //大格子是一个范围的值(即对角线的值结构)
                    {
                        //遍历查找功能函数。确定有多少格子在这个大格子中(callnum;dropnum)
                        clsResult cls = new clsResult();
                        cls.LsData = new List <clsData>();
                        clsPoi clsP = clsPoi[i] as clsPoi;

                        double longitude_lb = clsP.longitude_lb;     //左下角的坐标
                        double latitude_lb  = clsP.latitude_lb;      //左下角的坐标的结构对象

                        double longitude_rb     = clsP.longitude_rb; //右上角的坐标
                        double latitude_rb      = clsP.latitude_rb;  //右上角的坐标
                        string longtiuandlatiud = dt.Rows[kk]["key"].ToString();
                        if (clsP.longitudeandlatitude == dt.Rows[kk]["key"].ToString())
                        {
                            clsData clsquota = new clsData();
                            DataRow dr       = dt1.NewRow();
                            dr["col"] = clsP.Column;
                            dr["row"] = clsP.Row;
                            if (dt.Rows[kk]["voice_call_num"] != null && dt.Rows[kk]["voice_call_num"].ToString() != "")  //接入次数(1X语音业务)
                            {
                                clsquota.Voice_call_num = Convert.ToSingle(dt.Rows[kk]["voice_call_num"]);
                            }
                            else
                            {
                                clsquota.Voice_call_num = 0;
                            }
                            dr["voice_call_num"] = clsquota.Voice_call_num;
                            if (dt.Rows[kk]["voice_drop_num"] != null && dt.Rows[kk]["voice_drop_num"].ToString() != "")  //掉话次数(1X语音业务)
                            {
                                clsquota.Voice_drop_num = Convert.ToSingle(dt.Rows[kk]["Voice_drop_num"]);
                            }
                            else
                            {
                                clsquota.Voice_drop_num = 0;
                            }
                            dr["voice_drop_num"] = clsquota.Voice_drop_num;
                            if (dt.Rows[kk]["data_call_num"] != null && dt.Rows[kk]["data_call_num"].ToString() != "")   //接入次数(1X数据业务)
                            {
                                clsquota.Data_call_num = Convert.ToSingle(dt.Rows[kk]["data_call_num"]);
                            }
                            else
                            {
                                clsquota.Data_call_num = 0;
                            }
                            dr["data_call_num"] = clsquota.Data_call_num;

                            if (dt.Rows[kk]["data_drop_num"] != null && dt.Rows[kk]["data_drop_num"].ToString() != "")   //掉话次数(1X数据业务)
                            {
                                clsquota.Data_drop_num = Convert.ToSingle(dt.Rows[kk]["data_drop_num"]);
                            }
                            else
                            {
                                clsquota.Data_drop_num = 0;
                            }
                            dr["data_drop_num"] = clsquota.Data_drop_num;

                            if (dt.Rows[kk]["DODATA_CALL_NUM"] != null && dt.Rows[kk]["DODATA_CALL_NUM"].ToString() != "") //DO业务:接入次
                            {
                                clsquota.DODATA_CALL_NUM = Convert.ToSingle(dt.Rows[kk]["DODATA_CALL_NUM"]);
                            }
                            else
                            {
                                clsquota.DODATA_CALL_NUM = 0;
                            }
                            dr["DODATA_CALL_NUM"] = clsquota.DODATA_CALL_NUM;
                            dt1.Rows.Add(dr);
                        }
                    }
                }
                return(dt1);
            }
            catch (Exception ex)
            {
                clsTool.WriteLog(ex.Message + ex.StackTrace, "getsmallExistBig大格子里有多少个小格子");
                return(null);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 有多少个小格存在于大格中
        /// </summary>
        /// <returns></returns>
        public DataTable getNewsmallExistBig(DataTable dt, string[,] array, int XLength, int YLength, int city_id)
        {
            string    result    = string.Empty;
            float     longitude = 0f;
            float     latitude  = 0f;
            DataTable dt1       = new DataTable();

            for (int i = 0; i < XLength; i++)
            {
                for (int j = 0; j < YLength; j++)
                {
                    result = array[i, j];
                    string[] arr = result.Split('|');

                    longitude = Convert.ToSingle(arr[0]);
                    latitude  = Convert.ToSingle(arr[1]);

                    longitude = longitude * 1000;
                    latitude  = latitude * 1000;

                    //遍历查找功能函数。确定有多少格子在这个大格子中(callnum;dropnum)
                    clsResult cls = new clsResult();
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (dr["longitude"] == null || dr["longitude"].ToString() == string.Empty)
                        {
                            continue;
                        }
                        float smalllongitude = Convert.ToSingle(dr["longitude"].ToString());  //取的经度
                        if (dr["latitude"] == null || dr["latitude"].ToString() == string.Empty)
                        {
                            continue;
                        }
                        float smalllatitude = Convert.ToSingle(dr["latitude"].ToString());   //取的纬度
                        if (dr["callnum"] == null || dr["callnum"].ToString() == string.Empty)
                        {
                            continue;
                        }
                        float callnum = Convert.ToSingle(dr["callnum"]);
                        if (dr["callnum"] == null || dr["callnum"].ToString() == string.Empty)
                        {
                            continue;
                        }
                        float dropnum = Convert.ToSingle(dr["dropnum"]);

                        //判数是否在有多少在大格子中
                        if (longitude >= smalllongitude && latitude >= smalllatitude)
                        {
                            clsData clsquota = new clsData();
                            clsquota.Data_drop_num = dropnum;         //掉话次数
                            clsquota.Data_call_num = callnum;         //呼叫总次数
                            cls.ArrGrid[i, j]      = array[i, j];     //单元格称
                            cls.LsData.Add(clsquota);

                            cls.Latitude  = dr["latitude"].ToString();
                            cls.Longitude = dr["longitude"].ToString();
                        }
                    }
                    arrayData.Add(cls); //得到个数据结构图
                }
            }
            //dt1 = getZhiBiao(arrayData, city_id);
            return(dt1);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 有多少个小格存在于大格中
        /// </summary>
        /// <returns></returns>
        public DataTable getsmallExistBig(DataTable dt, List <clsPoi> clsPoi,
                                          int XLength, int YLength, int city_id,
                                          DateTime date, string strTime, float minlongitude, float maxlongitude)

        {
            try
            {
                string    result = string.Empty;
                DataTable dt1    = new DataTable();
                for (int i = 0; i < clsPoi.Count; i++)   //大格子是一个范围的值(即对角线的值结构)
                {
                    //遍历查找功能函数。确定有多少格子在这个大格子中(callnum;dropnum)
                    clsResult cls = new clsResult();
                    cls.LsData = new List <clsData>();
                    clsPoi clsP = clsPoi[i] as clsPoi;
                    //if (clsP.longitude_lb <= minlongitude) continue;  //
                    double longitude_lb = clsP.longitude_lb; //左下角的坐标
                    double latitude_lb  = clsP.latitude_lb;  //左下角的坐标的结构对象

                    double longitude_rb = clsP.longitude_rb; //右上角的坐标
                    double latitude_rb  = clsP.latitude_rb;  //右上角的坐标

                    string strWhere = string.Format(@"latitude>={0} and longitude>={1} and 
                                               latitude<={2} and longitude<={3}"
                                                    , latitude_lb, longitude_lb, latitude_rb, longitude_rb);

                    DataRow[] dr = dt.Select(strWhere, "longitude asc");
                    for (int kk = 0; kk < dr.Length; kk++)
                    {
                        clsData clsquota = new clsData();
                        #region 性能指标
                        if (dr[kk]["voice_call_num"] != null && dr[kk]["voice_call_num"].ToString() != "")  //接入次数(1X语音业务)
                        {
                            clsquota.Voice_call_num = Convert.ToSingle(dr[kk]["voice_call_num"]);
                        }
                        else
                        {
                            clsquota.Voice_call_num = 0;
                        }
                        if (dr[kk]["voice_drop_num"] != null && dr[kk]["voice_drop_num"].ToString() != "")  //掉话次数(1X语音业务)
                        {
                            clsquota.Voice_drop_num = Convert.ToSingle(dr[kk]["Voice_drop_num"]);
                        }
                        else
                        {
                            clsquota.Voice_drop_num = 0;
                        }
                        if (dr[kk]["data_call_num"] != null && dr[kk]["data_call_num"].ToString() != "")   //接入次数(1X数据业务)
                        {
                            clsquota.Data_call_num = Convert.ToSingle(dr[kk]["data_call_num"]);
                        }
                        else
                        {
                            clsquota.Data_call_num = 0;
                        }

                        if (dr[kk]["data_drop_num"] != null && dr[kk]["data_drop_num"].ToString() != "")   //掉话次数(1X数据业务)
                        {
                            clsquota.Data_drop_num = Convert.ToSingle(dr[kk]["data_drop_num"]);
                        }
                        else
                        {
                            clsquota.Data_drop_num = 0;
                        }

                        if (dr[kk]["DODATA_CALL_NUM"] != null && dr[kk]["DODATA_CALL_NUM"].ToString() != "") //DO业务:接入次数DODATA_CALL_NUM
                        {
                            clsquota.DODATA_CALL_NUM = Convert.ToSingle(dr[kk]["DODATA_CALL_NUM"]);
                        }
                        else
                        {
                            clsquota.DODATA_CALL_NUM = 0;
                        }
                        #endregion
                        //clsquota.Data_drop_num = Convert.ToSingle(dr[kk]["callnum"]);
                        //clsquota.Voice_call_num = Convert.ToSingle(dr[kk]["callnum"]);
                        cls.Latitude  = dt.Rows[kk]["latitude"].ToString();
                        cls.Longitude = dt.Rows[kk]["longitude"].ToString();
                        if (dr[kk]["GRID_ID"] != null && dr[kk]["GRID_ID"].ToString() != "")
                        {
                            clsquota.XYZUOBIAO = Convert.ToString(dr[kk]["GRID_ID"]);              //确定坐标点
                        }
                        clsquota.Row    = clsP.Row;                                                //得到行号
                        clsquota.Column = clsP.Column;                                             //得到列号
                        cls.LsData.Add(clsquota);
                    }
                    arrayData.Add(cls); //得到所有大格子的数据结构
                } //得到个数据结构图
                dt1 = getZhiBiao(arrayData, city_id, date, strTime);
                return(dt1);
            }
            catch (Exception ex)
            {
                clsTool.WriteLog(ex.Message + ex.StackTrace, "getsmallExistBig大格子里有多少个小格子");
                return(null);
            }
        }