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

📄 frmmain.cs

📁 以构建的方式来实现对通用的查询统计
💻 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 + -