📄 frmmain.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Display;
using System.IO;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
using System.Collections;
using dist.hb.EnvQueryStat.Manage;
using dist.hb.EnvQueryStat.Pub;
using dist.hb.EnvQueryStat.Query;
using dist.hb.EnvQueryStat.Stat;
namespace dist.hb.EnvQueryStat
{
public partial class frmMain : Form
{
private OleDbConnection m_DbConn;
public frmMain()
{
string strConn = "Provider=SQLOLEDB;Data Source=.;Persist Security Info=True;User ID=sa;Password =sa;Initial Catalog=hbPOP";
string sTemp;
sTemp = GetDBConnParam();
if (sTemp != "") strConn = sTemp;
//strConn = GetConnString();
m_DbConn = new OleDbConnection(strConn);
m_DbConn.Open();
InitializeComponent();
}
private string GetDBConnParam()
{
string sFile = System.Windows.Forms.Application.StartupPath + "\\dbConn.txt";
// Create the new, empty data file.
if (!File.Exists(sFile)) return "";
using (StreamReader sr = new StreamReader(sFile))
{
string sTemp = sr.ReadLine();
sr.Close();
return sTemp;
}
return "";
}
private string GetConnString()
{
// Get the connectionStrings.
ConnectionStringSettingsCollection connectionStrings =
ConfigurationManager.ConnectionStrings;
// Get the collection enumerator.
IEnumerator connectionStringsEnum =
connectionStrings.GetEnumerator();
// Loop through the collection and
// display the connectionStrings key, value pairs.
int i = 0;
Console.WriteLine("Connection strings.");
if (connectionStringsEnum.MoveNext())
{
string name = connectionStrings[i].Name;
return connectionStrings[i].ConnectionString ;
}
else return "";
}
private void BindQueryInstTable()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT QueryInstID,QueryInstName FROM FS_QueryInst";
OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_DbConn);
Adapter.Fill(ds, "FS_QueryInst");
DataTable dt = ds.Tables["FS_QueryInst"];
DataViewManager dvm = new DataViewManager(ds);
DataView dvLookup;
dvLookup = dvm.CreateDataView(ds.Tables["FS_QueryInst"]);
// <lookUpEdit1>
//lookUpEdit1.DataBindings.Add("EditValue", dvLookup, "VTID");
lookUpEdit1.Properties.DataSource = dvLookup;
lookUpEdit1.Properties.DisplayMember = "QueryInstID";
lookUpEdit1.Properties.ValueMember = "QueryInstName";
// </lookUpEdit1>
}
private void BindStatInstTable()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT StatInstID,StatInstName FROM FS_StatInst";
OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_DbConn);
Adapter.Fill(ds, "FS_StatInst");
DataTable dt = ds.Tables["FS_StatInst"];
DataViewManager dvm = new DataViewManager(ds);
DataView dvLookup;
dvLookup = dvm.CreateDataView(ds.Tables["FS_StatInst"]);
// <lookUpEdit2>
//lookUpEdit1.DataBindings.Add("EditValue", dvLookup, "VTID");
lookUpEdit2.Properties.DataSource = dvLookup;
lookUpEdit2.Properties.DisplayMember = "StatInstID";
lookUpEdit2.Properties.ValueMember = "StatInstName";
// </lookUpEdit2>
}
private void button1_Click(object sender, EventArgs e)
{
if (lookUpEdit1.GetColumnValue("QueryInstID") == null) ;
frmUnivQuery frm = new frmUnivQuery();
frm.OleDbConn = m_DbConn;
frm.MapControl = (ESRI.ArcGIS.Controls.IMapControl4)axMapControl1.GetOcx();
frm.QueryInstID = Convert.ToInt32(lookUpEdit1.GetColumnValue("QueryInstID"));
frm.Show(this);
}
private void Form1_Load(object sender, EventArgs e)
{
//InitData();
//FillData();
//InitGridColumns();
BindQueryInstTable();
BindStatInstTable();
string sMXD = System.Windows.Forms.Application.StartupPath + "\\POPs.mxd";
//ESRI.ArcGIS.Controls.IMapControl4 mapControl;
//mapControl = axMapControl1.Object as ESRI.ArcGIS.Controls.IMapControl4;
try
{
axMapControl1.LoadMxFile(sMXD);
}
catch (Exception)
{
;
}
// MessageBox.Show(sPath);
}
private void gridControl1_MouseLeave(object sender, EventArgs e)
{
}
private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
if (e.Column.AbsoluteIndex == 1)
{
}
}
private void btnQSSet_Click(object sender, EventArgs e)
{
frmQSSet frm = new frmQSSet();
frm.OleDbConn = m_DbConn;
frm.ShowDialog(this);
}
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
if (this.m_DbConn.State != ConnectionState.Closed)
{
this.m_DbConn.Close();
m_DbConn.Dispose();
}
}
catch (Exception ex)
{
throw new ArgumentException(ex.Message);
}
}
private void btnTempTest_Click(object sender, EventArgs e)
{
ProcXXQH();
return;
ESRI.ArcGIS.Controls.IMapControl4 mapControl;
mapControl = axMapControl1.Object as ESRI.ArcGIS.Controls.IMapControl4;
frmSelectXXQHbyATT frm = new frmSelectXXQHbyATT();
frm.mapControl = mapControl;
frm.OleDbConn = m_DbConn;
frm.iLevel = 2;
frm.FirstLayer = "省级行政区";
frm.SecondLayer = "地级行政区";
frm.ThirdLayer = "县级行政区";
frm.FirstKeyField = "PROV_CODE";
frm.FirstNameField = "name";
frm.SecondKeyField = "DIST_CODE";
frm.SecondNameField = "name";
frm.ThirdKeyField = "CNTY_CODE";
frm.ThirdNameField = "name";
frm.ProvCode = "110000";
frm.ShowDialog(this);
}
private void ProcXXQH()
{
DataSet ds = new DataSet();
string strSQL;
strSQL = "SELECT CODE,NAME FROM FS_XXQH_CODE" ;
OleDbDataAdapter Adapter = new System.Data.OleDb.OleDbDataAdapter(strSQL, m_DbConn);
OleDbCommandBuilder custCB = new OleDbCommandBuilder(Adapter);
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = m_DbConn;
//cmd.Transaction = m_tran;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL;
Adapter.SelectCommand = cmd;
Adapter.Fill(ds, "FS_XXQH_CODE");
DataTable table = ds.Tables["FS_XXQH_CODE"];
foreach (DataRow dr in table.Rows)
{
string name = dr["name"].ToString().Trim();
string code = dr["code"].ToString().Trim();
dr["name"] = name;
dr["code"] = code;
}
Adapter.Update(table);
}
private void btnStat_Click(object sender, EventArgs e)
{
if (lookUpEdit2.GetColumnValue("StatInstID") == null) ;
frmUnivStat frm = new frmUnivStat();
frm.OleDbConn = m_DbConn;
frm.MapControl = (ESRI.ArcGIS.Controls.IMapControl4)axMapControl1.Object;
frm.StatInstID = Convert.ToInt32(lookUpEdit2.GetColumnValue("StatInstID"));
frm.Show(this);
}
private void btnTest2_Click(object sender, EventArgs e)
{
ESRI.ArcGIS.Controls.IMapControl4 mapControl;
mapControl = axMapControl1.Object as ESRI.ArcGIS.Controls.IMapControl4;
IFeatureLayer pFLayer = mapControl.get_Layer(0) as IFeatureLayer;
if (pFLayer == null) return ;
IChartRenderer pChartRenderer;
pChartRenderer = new ChartRenderer();
IRendererFields pRendererFields = pChartRenderer as IRendererFields;
pRendererFields.AddField("SL", "SL");
pRendererFields.AddField("DS","DS");
//取图层的统计字段的最大值
IFeatureClass pFClass;
pFClass = pFLayer.FeatureClass;
if (pFClass == null) return ;
double dbMaxValue = GetStatMax(pFClass);
if (dbMaxValue <= 0) return ;
IPieChartSymbol pPieChartSymbol = new PieChartSymbolClass();
IChartSymbol pChartSymbol = pPieChartSymbol as IChartSymbol;
IMarkerSymbol pMarkerSymbol = pPieChartSymbol as IMarkerSymbol;
pChartSymbol.MaxValue = dbMaxValue;
pMarkerSymbol.Size = 24;
ISymbol pSym;
IFillSymbol pFillSymbol;
ISymbolArray pSymbolArray = pPieChartSymbol as ISymbolArray;
for (int i = 0; i <2; i++)
{
pFillSymbol = new SimpleFillSymbol();
pFillSymbol.Color = GetColor(i + 1);
pSym = pFillSymbol as ISymbol;
pSymbolArray.AddSymbol(pSym);
}
IPieChartRenderer pPieChartRen = pChartRenderer as IPieChartRenderer;
IRgbColor pRgbColor = new RgbColor();
pRgbColor.Red = 255;
pRgbColor.Green = 0;
pRgbColor.Blue = 0;
pRgbColor.NullColor = true;
pRgbColor.Transparency = 0;
pFillSymbol = new SimpleFillSymbolClass();
pFillSymbol.Color = pRgbColor;
pSym = pFillSymbol as ISymbol; ;
pChartRenderer.ChartSymbol = pPieChartSymbol as IChartSymbol;
pChartRenderer.BaseSymbol = pSym;
pChartRenderer.UseOverposter = true;
//------------------------------------------------------
//这里要注意,要如何计算
double dbMinValue = GetRowSumMin(pFClass);
//if(dbMinValue < 0.0001) dbMinValue = 0.1;////?????
pPieChartRen.MinSize = 24;
pPieChartRen.MinValue = dbMinValue;
pPieChartRen.FlanneryCompensation = false ;
pPieChartRen.ProportionalBySum = true;
//------------------------------------------------------
pChartRenderer.Label = "tttt";
pChartRenderer.ChartSymbol = pChartSymbol;
pChartRenderer.CreateLegend();
IGeoFeatureLayer pGeoFeatureLayer = pFLayer as IGeoFeatureLayer;
IFeatureRenderer ren = pPieChartRen as IFeatureRenderer;
pGeoFeatureLayer.Renderer = ren;
}
private double GetStatMax(IFeatureClass pFClass)
{
if (pFClass == null) return 0.00;
IFeatureCursor FCursor = clsGISPub.SearchFeature(pFClass, "");
if (FCursor == null) return 0.00;
double dbTemp = 0.00;
while (true)
{
IFeature Feat = FCursor.NextFeature();
if (Feat == null) break;
for (int i = 0; i < Feat.Fields.FieldCount; i++)
{
IField field = Feat.Fields.get_Field(i);
if (field.Type == esriFieldType.esriFieldTypeDouble || field.Type == esriFieldType.esriFieldTypeInteger ||
field.Type == esriFieldType.esriFieldTypeSingle || field.Type == esriFieldType.esriFieldTypeSmallInteger)
{
if (Feat.get_Value(i).ToString() != "")
{
double dd = Convert.ToDouble(Feat.get_Value(i));
if (dd > dbTemp) dbTemp = dd;
}
}
}
}
return dbTemp;
}
private double GetRowSumMin(IFeatureClass pFClass)
{
double dbRetun = 0.0001;
if (pFClass == null) return dbRetun;
IFeatureCursor FCursor = clsGISPub.SearchFeature(pFClass, "");
if (FCursor == null) return dbRetun;
double dbMin = 10000;
while (true)
{
IFeature Feat = FCursor.NextFeature();
if (Feat == null) break;
double dbTemp = 0;
for (int i = 0; i < Feat.Fields.FieldCount; i++)
{
IField field = Feat.Fields.get_Field(i);
if (field.Type == esriFieldType.esriFieldTypeDouble || field.Type == esriFieldType.esriFieldTypeInteger ||
field.Type == esriFieldType.esriFieldTypeSingle || field.Type == esriFieldType.esriFieldTypeSmallInteger)
{
if (Feat.get_Value(i).ToString() != "")
{
double dd = Convert.ToDouble(Feat.get_Value(i));
dbTemp += dd;
}
}
}
if (dbMin > dbTemp && dbMin > dbRetun) dbMin = dbTemp;
}
if (dbMin > dbRetun) return dbMin;
else return dbRetun;
}
IColor GetColor(int i)
{
#region "获取颜色"
IRgbColor pColor = new RgbColorClass();
switch (i)
{
case 1:
pColor.Red = 255;
pColor.Green = 0;
pColor.Blue = 0;
return pColor;
case 2:
pColor.Red = 0;
pColor.Green = 255;
pColor.Blue = 0;
return pColor;
case 3:
pColor.Red = 0;
pColor.Green = 0;
pColor.Blue = 255;
return pColor;
case 4:
pColor.Red = 0;
pColor.Green = 255;
pColor.Blue = 255;
return pColor;
case 5:
pColor.Red = 255;
pColor.Green = 0;
pColor.Blue = 255;
return pColor;
case 6:
pColor.Red = 128;
pColor.Green = 0;
pColor.Blue = 0;
return pColor;
case 7:
pColor.Red = 0;
pColor.Green = 0;
pColor.Blue = 128;
return pColor;
case 8:
pColor.Red = 255;
pColor.Green = 128;
pColor.Blue = 0;
return pColor;
case 9:
pColor.Red = 128;
pColor.Green = 0;
pColor.Blue = 255;
return pColor;
case 10:
pColor.Red = 128;
pColor.Green = 128;
pColor.Blue = 255;
return pColor;
case 11:
pColor.Red = 118;
pColor.Green = 21;
pColor.Blue = 6;
return pColor;
case 12:
pColor.Red = 187;
pColor.Green = 48;
pColor.Blue = 207;
return pColor;
case 13:
pColor.Red = 221;
pColor.Green = 0;
pColor.Blue = 255;
return pColor;
case 14:
pColor.Red = 128;
pColor.Green = 34;
pColor.Blue = 128;
return pColor;
case 15:
pColor.Red = 152;
pColor.Green = 225;
pColor.Blue = 30;
return pColor;
case 16:
pColor.Red = 253;
pColor.Green = 147;
pColor.Blue = 2;
return pColor;
case 17:
pColor.Red = 224;
pColor.Green = 200;
pColor.Blue = 30;
return pColor;
case 18:
pColor.Red = 236;
pColor.Green = 248;
pColor.Blue = 7;
return pColor;
case 19:
pColor.Red = 194;
pColor.Green = 61;
pColor.Blue = 194;
return pColor;
case 20:
pColor.Red = 83;
pColor.Green = 74;
pColor.Blue = 181;
return pColor;
default:
pColor.Red = 0;
pColor.Green = 0;
pColor.Blue = 0;
return pColor;
}
#endregion
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -