📄 bore.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 + -