⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bore.cs

📁 剖面生成器
💻 CS
字号:
using System;
using System.Data;
using System.Windows.Forms;
using System.Collections;
using Microsoft.Win32;
using SuperMapLib;
using System.Data.SqlClient;

namespace ProfileCtrl
{
	/// <summary>
	/// 从数据库读取数据类
	/// </summary>
	public class Bore
	{
		#region 设置钻孔属性
		private string _ZKYSBH;	//原始编号		
		private double _KKHZB;	//横坐标
		private double _KKZZB;	//纵坐标
		private float x = 0;	//生成剖面图时的相对横坐标
		private float _DMBG;	//地面标高     
		private float _ZKSD;	//钻孔深度
		private string[] _DCSDBH;//地层时代
		private string[] _YXBH;	//岩性
		private string[] _DCYS;	//颜色
		private string[] _HSCDM;//含水层编号
		private float[] _CDBG;	//层底标高	
		public string ZKYSBH
		{
			get{ return _ZKYSBH; }
		}
		public float DMBG
		{
			get{ return _DMBG; }
		}
		public float X
		{
			get{ return x; }
			set{ x = value;}
		}
		public double KKHZB
		{
			get{ return _KKHZB; }
		}
		public double KKZZB
		{
			get{ return _KKZZB; }
		}
		public float ZKSD
		{
			get{ return _ZKSD; }
		}
		public string[] GetDCSDBH()
		{
			return _DCSDBH; 
		}
		public string[] GetYXBH()
		{
			return _YXBH; 
		}
		public string[] GetDCYS()
		{
			return _DCYS; 
		}
		public float[] GetCDBG()
		{
			return _CDBG; 
			//			set{ _CDBG = value; }
		}
		public string[] GetHSCDM()
		{
			return _HSCDM; 
		}
		SqlConnection Sqlcon;		//数据库连接
		#endregion
		public Bore()
		{
			//构造函数
		}
		/// <summary>
		/// 读取注册表中数据库设置的字符串
		/// </summary>
		/// <returns></returns>
		public string ReadRegistryCon()
		{
			string con;//数据库链接字符串
			string server,database,password,userid;
			RegistryKey mykey=Registry.LocalMachine.OpenSubKey("Software",true);
			RegistryKey Borekey=mykey.OpenSubKey("WORKFLOW");
			server= (string)Borekey.GetValue("SQLServer_DataSource");
            userid= (string)Borekey.GetValue("SQLServer_UserID");
			password= (string)Borekey.GetValue("SQLServer_Password");
			database=(string)Borekey.GetValue("SQLServer_serverCatalog");
			Borekey.Close();
			con="Server="+server+";uid="+userid+";pwd="+password+";database="+database;
			return con;

//			Server=cjm;uid=sa;pwd='sa';database=jswater

		}
		/// <summary>
		/// 从数据库中读取数据
		/// </summary>
		/// <param name="strID">钻孔统一编号</param>
		/// <param name="isSum">是否概化</param>
		/// <returns></returns>
		public bool InitData(string strID,bool isSum)
		{			//打开数据库,读出数据						SqlDataAdapter datAdpter;		//数据适配器			SqlCommandBuilder Sqlbuilder;			DataSet datSet;			DataRow datRow;			string cmdStr,strTmp;			string conStr=ReadRegistryCon();// = "Provider=MSDAORA;Password=manager;User ID=system;Data Source=hydrogis_gwserver";			Sqlcon = new System.Data.SqlClient.SqlConnection(conStr);		//创建数据库连接			//取钻孔基本的信息			cmdStr = "select tybh,hbgd,jd,wd,zksd from zkjlb where tybh='" + strID +"'";				//钻孔统一标号,地面标高,横坐标,纵坐标,钻孔深度			Sqlcon.Open();			datAdpter = new System.Data.SqlClient.SqlDataAdapter(cmdStr,Sqlcon);	//创建一个数据适配器			Sqlbuilder=new System.Data.SqlClient.SqlCommandBuilder(datAdpter);	//创建一个commandbuilder							//打开连接			datSet = new DataSet();			//数据集				datAdpter.Fill(datSet);			//填充数据									if(datSet.Tables[0].Rows.Count < 1)	//数据库中没有钻孔数据			{ 				MessageBox.Show(strID + "无数据!");				Sqlcon.Close();				return false;				}			//读取钻孔基本信息表中钻孔的地表信息			datRow = datSet.Tables["Table"].Rows[0];			_ZKYSBH = datRow["tybh"].ToString();			strTmp = datRow["hbgd"].ToString().Trim();			if(strTmp != "") _DMBG = float.Parse(strTmp);			strTmp = datRow["jd"].ToString().Trim();			if(strTmp != "") _KKHZB = double.Parse(strTmp);			strTmp = datRow["wd"].ToString().Trim();			if(strTmp != "") _KKZZB = double.Parse(strTmp);			strTmp = datRow["ZKSD"].ToString().Trim();			if(strTmp != "") _ZKSD = float.Parse(strTmp);			Sqlcon.Close();						//取地层信息			//			if(isSum)	//是大层//			{//				if(!BigstratumDataLoad(strID,strTmp))//					return false;//			}//			else	//是小层//			{				if(!LittleStratumDataLoad(strID,strTmp))					return false;//			}//						NameConvertToColorCode();			return true;		}

			/// <summary>
		/// 颜色中文名称转变为标准英文单词
		/// </summary>
		
		private void NameConvertToColorCode( ) 
		{
			
			string cmdStr = "select * from CODE_COLOR";
			DataSet datSet = new DataSet();
			//数据集
			Sqlcon.Open();
			SqlDataAdapter datAdpter = new System.Data.SqlClient.SqlDataAdapter(cmdStr,Sqlcon);
			//创建一个数据适配器
			SqlCommandBuilder Sqlbuilder=new System.Data.SqlClient.SqlCommandBuilder(datAdpter);
			//创建一个commandbuilder
			datAdpter.Fill(datSet);
			//填充数据
			for(int i=1;i<_DCYS.Length;i++)			{				for(int j=0;j<datSet.Tables[0].Rows.Count;j++)				{					if(datSet.Tables[0].Rows[j]["NAME"].ToString() == _DCYS[i])					{						_DCYS[i] = datSet.Tables[0].Rows[j]["COLOR"].ToString();						break;					}				}				if(_DCYS[i] == null)				{					_DCYS[i] = "Black";				}			}
			Sqlcon.Close();
		}
	
		/// <summary>
		/// 小层数据读取
		/// </summary>
		/// <param name="strID">钻孔编号</param>
		/// <param name="strTmp">地表信息</param>
		/// <returns></returns>
		private bool LittleStratumDataLoad( string strID, string strTmp)
		{
//			string cmdStr = "select DCSDBH,YXBH,DCYS,CDBG,HSCDM from zkjlb2 where tybh=" + strID + " order by bh";
			
			string cmdStr = "select sd,bh,tz,ts from zkjlb2 where tybh='" + strID + "' order by bh";
			DataSet datSet = new DataSet();//数据集
			Sqlcon.Open();//打开连接
			SqlDataAdapter datAdpter = new System.Data.SqlClient.SqlDataAdapter(cmdStr,Sqlcon);//创建一个数据适配器
			SqlCommandBuilder Sqlbuilder=new System.Data.SqlClient.SqlCommandBuilder(datAdpter);//创建一个commandbuilder
			
			datAdpter.Fill(datSet);
			DataRow datRow;
			//填充数据			if(datSet.Tables["Table"].Rows.Count < 1)	//数据库中没有钻孔地层数据			{ 
				Sqlcon.Close();
				
				return false;
			}
			int row = datSet.Tables["Table"].Rows.Count + 1;
			_DCSDBH = new string[row];
			_YXBH = new string[row];
			_DCYS = new string[row];
			_CDBG  = new float[row];
			_HSCDM = new string[row];
			_CDBG[0] = _DMBG;
			//地面标高
			_HSCDM[0] = "隔水层";
			//地面标高
			string dcColor = "";
			for(int i=1;i<row;i++)			{				datRow = datSet.Tables["Table"].Rows[i-1];//				_DCSDBH[i] = datRow["DCSDBH"].ToString();				_YXBH[i] = datRow["tz"].ToString();//岩性				dcColor = datRow["ts"].ToString();//颜色				string color="";				for(int j=0;j<dcColor.Length;j++)				{					if(dcColor[j] == '色')					{						color=dcColor.Substring(0,j);						break;					}				}				_DCYS[i] = color;				strTmp = datRow["sd"].ToString().Trim();				if(strTmp != "") _CDBG[i] = _CDBG[i-1]-float.Parse(strTmp);				_HSCDM[i] = datRow["bh"].ToString().Trim();				}
			Sqlcon.Close();
			
			return true;
		}
//	
		/// <summary>
		/// 大地层数据读取
		/// </summary>
		/// <param name="strID">钻孔编号</param>
		/// <param name="strTmp">钻孔的地表信息</param>
		/// <returns></returns>
//		private bool BigstratumDataLoad( string strID,   string strTmp)
//		{
//			string cmdStr = "select sd,bh,tz,ts from zkjlb2 where tybh=" + strID + " order by bh";
//			//层底标高,含水层编号
//			DataSet datSet = new DataSet();//数据集
//			Sqlcon.Open();//打开连接
//			SqlDataAdapter datAdpter = new System.Data.SqlClient.SqlDataAdapter(cmdStr,Sqlcon);
//			//创建一个数据适配器
//			SqlCommandBuilder Sqlbuilder=new System.Data.SqlClient.SqlCommandBuilder(datAdpter);
//			//创建一个commandbuilder
//			datAdpter.Fill(datSet);
//			DataRow datRow;
//			//填充数据//			if(datSet.Tables["Table"].Rows.Count < 1)	//数据库中没有钻孔地层数据//			{ //				MessageBox.Show(strID + "无地层信息数据!");//				Sqlcon.Close();//				return false;//			}
//			int row = datSet.Tables["Table"].Rows.Count;
//			datRow = datSet.Tables["Table"].Rows[0];
//			ArrayList arrListHSC = new ArrayList();
//			ArrayList arrListCDBG = new ArrayList();
//			strTmp = datRow["HSCDM"].ToString().Trim();
//			arrListHSC.Add(strTmp);
//			arrListCDBG.Add(_DMBG);
//			//修改:读入每个大层的底界深度,原来是读入每个大层的上届深度
//			for(int i=0;i<row-1;i++)//			{//				datRow = datSet.Tables["Table"].Rows[i];//				if(datRow["HSCDM"].ToString().Trim() != datSet.Tables["Table"].Rows[i+1]["HSCDM"].ToString().Trim())//				{//					strTmp = datRow["HSCDM"].ToString().Trim();//					arrListHSC.Add(strTmp);//					arrListCDBG.Add(datRow["CDBG"].ToString().Trim());//				}					//			}
//			//探孔最深一层数据
//			arrListHSC.Add(datSet.Tables["Table"].Rows[row-1]["HSCDM"].ToString().Trim());
//			arrListCDBG.Add(datSet.Tables["Table"].Rows[row-1]["CDBG"].ToString().Trim());
//			for(int i=1;i<arrListCDBG.Count;i++)		//小于2米的地层向下合并//			{//				float depth = float.Parse(arrListCDBG[i-1].ToString()) - float.Parse(arrListCDBG[i].ToString());//				if(depth < 2.0)//				{//					arrListCDBG.RemoveAt(i);//					arrListHSC.RemoveAt(i);//				}//			}
//			row = arrListHSC.Count;
//			_HSCDM = new string[row];
//			_CDBG  = new float[row];
//			_YXBH = new string[row];
//			_DCYS = new String[row];
//			for(int i=0;i<row;i++)//			{//				_DCYS[i] = _YXBH[i] = _HSCDM[i] = arrListHSC[i].ToString();//地层颜色,岩性,含水层编号???//				strTmp = arrListCDBG[i].ToString();//				if(strTmp != "") _CDBG[i] = float.Parse(strTmp);//			}
//			Sqlcon.Close();
//			return true;
//		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -