Exemplo n.º 1
0
        private void Bulk_Import_Crossing(string[] fileArray)
        {
            if (fileArray == null || fileArray.Length == 0)
            {
                return;
            }
            try
            {
                //定义一个开始时间
                DateTime    startTime   = DateTime.Now;
                int         nCount      = 0;
                CoordCovert dataConvert = new CoordCovert();

                for (int i = 0; i < fileArray.Length; i++)
                {
                    string fileName = fileArray[i];
                    //因为文件比较大,所有使用StreamReader的效率要比使用File.ReadLines高
                    using (StreamReader sr = new StreamReader(fileName, Encoding.Default))
                    {
                        while (!sr.EndOfStream)
                        {
                            string   readStr = sr.ReadLine();                                                                  //读取一行数据
                            string[] strs    = readStr.Split(new char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries); //将读取的字符串按"制表符/t“和”“分割成数组

                            string jkqd    = "";                                                                               //区段
                            string xhcgtjl = "";                                                                               //距小号塔距离
                            string wd      = "";                                                                               //纬度
                            string jd      = "";                                                                               //经度
                            string gc      = "";                                                                               //高程
                            string wxdmc   = "";                                                                               //危险点名称
                            string spjl    = "";                                                                               //水平距离
                            string czjl    = "";                                                                               //垂直距离
                            string kjjl    = "";                                                                               //空间距离
                            string ddjl    = "";                                                                               //对地距离
                            string version = "";                                                                               //数据版本

                            string line_jd = "";                                                                               //导线点经度
                            string line_wd = "";                                                                               //导线点维度
                            string line_gc = "";                                                                               //导线点高程

                            if (strs.Length == 8)                                                                              //缺高程、空间距离、对地距离
                            {
                                jkqd    = strs[1];                                                                             //区段
                                xhcgtjl = strs[2];                                                                             //距小号塔距离
                                wd      = strs[3];                                                                             //纬度
                                jd      = strs[4];                                                                             //经度
                                gc      = "null";                                                                              //高程
                                wxdmc   = strs[5];                                                                             //危险点名称
                                spjl    = strs[6];                                                                             //水平距离
                                czjl    = strs[7];                                                                             //垂直距离
                            }
                            else if (strs.Length == 9)                                                                         //缺空间距离、对地距离
                            {
                                jkqd    = strs[1];                                                                             //区段
                                xhcgtjl = strs[2];                                                                             //距小号塔距离
                                wd      = strs[3];                                                                             //纬度
                                jd      = strs[4];                                                                             //经度
                                gc      = strs[5];                                                                             //高程
                                wxdmc   = strs[6];                                                                             //危险点名称
                                spjl    = strs[7];                                                                             //水平距离
                                czjl    = strs[8];                                                                             //垂直距离
                            }
                            else if (strs.Length == 10)                                                                        //缺对地距离
                            {
                                jkqd    = strs[1];                                                                             //区段
                                xhcgtjl = strs[2];                                                                             //距小号塔距离
                                wd      = strs[3];                                                                             //纬度
                                jd      = strs[4];                                                                             //经度
                                gc      = strs[5];                                                                             //高程
                                wxdmc   = strs[6];                                                                             //危险点名称
                                spjl    = strs[7];                                                                             //水平距离
                                czjl    = strs[8];                                                                             //垂直距离
                                kjjl    = strs[9];                                                                             //空间距离
                                //jkjl = "null"; //对地距离
                            }
                            else if (strs.Length == 11)
                            {
                                jkqd    = strs[1]; //区段
                                xhcgtjl = strs[2]; //距小号塔距离
                                wd      = strs[3]; //纬度
                                jd      = strs[4]; //经度
                                gc      = strs[5]; //高程
                                wxdmc   = strs[6]; //危险点名称
                                spjl    = strs[7]; //水平距离
                                czjl    = strs[8]; //垂直距离
                                kjjl    = strs[9]; //空间距离
                                //jkjl = strs[10]; //对地距离
                            }
                            else if (strs.Length == 17)
                            {
                                jkqd    = strs[1]; //区段
                                xhcgtjl = strs[2]; //距小号塔距离
                                wd      = strs[3]; //纬度
                                jd      = strs[4]; //经度
                                gc      = strs[5]; //高程
                                wxdmc   = strs[6]; //危险点名称
                                spjl    = strs[7]; //水平距离
                                czjl    = strs[8]; //垂直距离
                                kjjl    = strs[9]; //空间距离
                                //jkjl = strs[10]; //对地距离

                                line_jd = strs[12];
                                line_wd = strs[13];
                                line_gc = strs[14];
                            }
                            else
                            {
                                continue;
                            }

                            string qsh = "";
                            if (jkqd.Length > 0)
                            {
                                string[] arr = jkqd.Split(new char[] { ')' });
                                qsh = arr[0].Substring(1);
                            }
                            txtStart.Text = qsh;

                            //有重复的不插入
                            //string sql = string.Format("select * from t_poles where name='{0}'", TGH + "#");
                            //if (DbHelper.Count(CommandType.Text, sql, null) >= 1)
                            //    continue;
                            version = dtVersion.Value.Year.ToString();

                            string cmdText = string.Format("insert into r_crosses(XLID,XLMC,NAME,JKLX,JKQD,XHCGT,XHCGTJL,SPJL,CZJL,KJJL,JD,WD,GC,VERSION,LINE_JD,LINE_WD,LINE_GC) " +
                                                           "values({0},'{1}','{2}','{3}','{4}','{5}',{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16})", xlid, xlmc, wxdmc,
                                                           wxdmc, jkqd, qsh, xhcgtjl, spjl, czjl, kjjl, jd, wd, gc, version, line_jd, line_wd, line_gc);

                            //交跨
                            //string cmdText = string.Format("update r_crosses set line_jd={0}, line_wd={1},line_gc={2} where xlmc='复奉线' and name='{3}'and jkqd='{4}' and xhcgtjl={5}",
                            //                                line_jd, line_wd, line_gc, wxdmc, jkqd, xhcgtjl);

                            DbHelper.ExecuteNonQuery(CommandType.Text, cmdText, null);
                            nCount++;
                        }
                    }
                }
                //结束时间-开始时间=总共花费的时间
                TimeSpan ts = DateTime.Now - startTime;
                lblInfo.Text = "导入状态:" + "共花费时间:" + ts.ToString() + " 导入记录条数:" + nCount;
                Array.Clear(fileArr, 0, fileArr.Length);
                txtFileName.Text = "";

                //更新指定线路的顺序号
                //string sql_update = "UPDATE t_poles AA JOIN(SELECT NAME,(@rowNum := @rowNum + 1) AS rowNo FROM t_poles a,(SELECT(@rowNum:= 0)) b ";
                //sql_update = sql_update + " WHERE a.xlmc = @xlmc ORDER BY a.NAME ASC) CC";
                //sql_update = sql_update + " SET AA.SXH = CC.rowNO WHERE AA.XLMC = @xlmc AND AA.NAME = CC.NAME";
                //MySqlParameter[] ps ={ new MySqlParameter("@compartName", xlmc) };
                //DbHelper.ExecuteNonQuery(CommandType.Text, sql_update, ps);
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 2
0
        //导入杆塔数据
        private void Bulk_Import_Poles(string[] fileArr)
        {
            int nCount = 0;

            try
            {
                //定义一个开始时间
                DateTime startTime = DateTime.Now;

                CoordCovert dataConvert = new CoordCovert();

                for (int i = 0; i < fileArr.Length; i++)
                {
                    string fileName = fileArr[i];
                    //因为文件比较大,所有使用StreamReader的效率要比使用File.ReadLines高
                    int nRow = -1;
                    using (StreamReader sr = new StreamReader(fileName, Encoding.Default))
                    {
                        while (!sr.EndOfStream)
                        {
                            nRow++;
                            string   readStr = sr.ReadLine();                                                                  //读取一行数据
                            string[] strs    = readStr.Split(new char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries); //将读取的字符串按"制表符/t“和”“分割成数组
                            if (strs.Length < 7)
                            {
                                continue;
                            }

                            string sxh  = strs[0]; //顺序号
                            string X    = strs[1]; //
                            string Y    = strs[2];
                            string TJGC = strs[3]; //塔基高程
                            string TDGC = strs[4]; //塔顶高程
                            string TX   = strs[5]; //塔型
                            string TGH  = strs[6]; //杆塔号

                            if (nRow == 0 && (containChinese(sxh) || containChinese(X)))
                            {
                                continue;
                            }

                            //去掉杆子中包含的括号
                            if (TGH.Contains('('))
                            {
                                TGH = TGH.Split(new char[] { '(' })[0].Trim();
                            }
                            if (TGH.Contains('('))
                            {
                                TGH = TGH.Split(new char[] { '(' })[0].Trim();
                            }


                            int      n_DH    = int.Parse(cboxDH.Text.Trim());
                            double[] lon_lat = dataConvert.UTMXYToToLonLat(double.Parse(X), double.Parse(Y), n_DH, false);

                            double JD   = lon_lat[0];
                            double WD   = lon_lat[1];
                            double GC   = double.Parse(TJGC);
                            double GTQG = double.Parse(TDGC) - GC;

                            ///计算档距
                            int    dj    = 0; //档距,即前后杆塔之间的水平距离
                            string t_sql = "";
                            if (TGH.Contains('+'))
                            {
                                //TGH = (TGH.Split(new char[] { '+' })[0]).Trim();
                                t_sql = string.Format("select jd,wd from t_poles where xlmc='{0}' and name='{1}'", xlmc, (TGH.Split(new char[] { '+' })[0]).Trim() + "#");
                            }
                            else
                            {
                                t_sql = string.Format("select jd,wd from t_poles where xlmc='{0}' and name='{1}'", xlmc, (int.Parse(TGH) - 1) + "#");
                            }

                            DataSet ds = DbHelper.GetDataSet(CommandType.Text, t_sql, null);

                            if (ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0)  //如果能读到数据,一行一行地读
                            {
                                double t_jd = double.Parse(ds.Tables[0].Rows[0].ItemArray[0].ToString());
                                double t_wd = double.Parse(ds.Tables[0].Rows[0].ItemArray[1].ToString());
                                dj = (int)dataConvert.GetDistance(JD, WD, t_jd, t_wd);
                            }

                            //有重复的不插入
                            string sql = string.Format("select * from t_poles where name='{0}' and xlmc='{1}'", TGH + "#", xlmc);
                            if (DbHelper.Count(CommandType.Text, sql, null) >= 1)
                            {
                                continue;
                            }

                            string cmdText = string.Format("insert into t_poles(XLID,XLMC,NAME,GTXH,YWDW,YWBM,GTQG,JD,WD,GC,SXH,DJ) " +
                                                           "values({0},'{1}','{2}','{3}','{4}','{5}',{6},{7},{8},{9},{10},{11})", xlid, xlmc, TGH + "#",
                                                           TX, ywdw, ywbm, GTQG, JD, WD, GC, sxh, dj);
                            DbHelper.ExecuteNonQuery(CommandType.Text, cmdText, null);
                            nCount++;
                        }
                    }
                }

                //string mysql = "update t_poles AA join ( Select NAME,(@rowNum:=@rowNum+1) as rowNo From t_poles a,(Select (@rowNum :=0) ) b where a.xlmc = '复奉线(安徽)' Order by a.name asc) CC SET AA.SXH = CC.rowNO WHERE AA.XLMC = '复奉线(安徽)' and AA.NAME = CC.NAME";
                //DbHelper.ExecuteNonQuery(CommandType.Text, mysql, null);

                //结束时间-开始时间=总共花费的时间
                TimeSpan ts = DateTime.Now - startTime;
                lblInfo.Text = "导入状态:" + "共花费时间:" + ts.ToString() + " 导入记录条数:" + nCount;
                Array.Clear(fileArr, 0, fileArr.Length);
                txtFileName.Text = "";
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message + " :" + nCount);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + " :" + nCount);
            }
        }
Exemplo n.º 3
0
        private void Bulk_Import_Danger(string[] fileArray)
        {
            if (fileArray == null || fileArray.Length == 0)
            {
                return;
            }
            try
            {
                //定义一个开始时间
                DateTime    startTime   = DateTime.Now;
                int         nCount      = 0;
                CoordCovert dataConvert = new CoordCovert();

                for (int i = 0; i < fileArray.Length; i++)
                {
                    string fileName = fileArray[i];
                    //因为文件比较大,所有使用StreamReader的效率要比使用File.ReadLines高
                    using (StreamReader sr = new StreamReader(fileName, Encoding.Default))
                    {
                        while (!sr.EndOfStream)
                        {
                            string   readStr = sr.ReadLine();                                                                  //读取一行数据
                            string[] strs    = readStr.Split(new char[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries); //将读取的字符串按"制表符/t“和”“分割成数组
                            if (strs.Length < 11)
                            {
                                continue;
                            }

                            string yhqd    = strs[1];  //区段
                            string xhcgtjl = strs[2];  //距小号塔距离
                            string wd      = strs[3];  //纬度
                            string jd      = strs[4];  //经度
                            string gc      = strs[5];  //高程
                            string wxdmc   = strs[6];  //危险点名称
                            string spjl    = strs[7];  //水平距离
                            string czjl    = strs[8];  //垂直距离
                            string kjjl    = strs[9];  //空间距离
                            string ddjl    = strs[10]; //对地距离

                            string line_jd = strs[18];
                            string line_wd = strs[19];
                            string line_gc = strs[20];

                            string qsh = "";
                            if (yhqd.Length > 0)
                            {
                                string[] arr = yhqd.Split(new char[] { ')' });
                                qsh = arr[0].Substring(1);
                            }
                            txtStart.Text = qsh;

                            //有重复的不插入
                            //string sql = string.Format("select * from t_poles where name='{0}'", TGH + "#");
                            //if (DbHelper.Count(CommandType.Text, sql, null) >= 1)
                            //    continue;
                            string cmdText = string.Format("insert into r_dangers(XLID,XLMC,YHLX,YHQD,XHCGT,XHCGTJL,SPJL,CZJL,DDJL,KJJL,JD,WD,GC,STATUS,LINE_JD,LINE_WD,LINE_GC) " +
                                                           "values({0},'{1}','{2}','{3}','{4}',{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16})", xlid, xlmc, wxdmc,
                                                           yhqd, qsh, xhcgtjl, spjl, czjl, ddjl, kjjl, jd, wd, gc, status, line_jd, line_wd, line_gc);

                            DbHelper.ExecuteNonQuery(CommandType.Text, cmdText, null);
                            nCount++;
                        }
                    }
                }
                //结束时间-开始时间=总共花费的时间
                TimeSpan ts = DateTime.Now - startTime;
                lblInfo.Text = "导入状态:" + "共花费时间:" + ts.ToString() + " 导入记录条数:" + nCount;
                Array.Clear(fileArr, 0, fileArr.Length);
                txtFileName.Text = "";
            }
            catch (IOException ex)
            {
                MessageBox.Show(ex.Message);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }