123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- using SuperMap.Data;
- using SuperMap.Mapping;
- using System;
- using System.Data;
- using System.Drawing;
- using System.Windows.Forms;
- using WWPipeLine.MapBasic;
- using WWPipeLine.MapBasic.Conditions;
- namespace WWPipeLine.MapTools.Conditions.AnalystToolBar
- {
- public class PouMian : BasicToolBar
- {
- public PouMian() : base()
- {
- this.ConditionPanelName = "剖面分析";
- var analystToolStripButton = new ToolStripButton()
- {
- DisplayStyle = ToolStripItemDisplayStyle.ImageAndText,
- Text = "分析",
- Name = "Analyst",
- AutoToolTip = false
- };
- base.ToolStrip.Items.Add(analystToolStripButton);
- analystToolStripButton.Click += AnalystToolStripButton_Click;
- }
- protected override void OnLoad(EventArgs e)
- {
- ComsStatic.SetLayersIsSelectableFalse(ComsStatic.dvJSLK.Name, true);
- }
- private void AnalystToolStripButton_Click(object sender, EventArgs e)
- {
- Selection[] _selection = base.MapControl.Map.FindSelection(true);
- if (_selection.Length != 1 || _selection == null)
- {
- Sunny.UI.UIMessageTip.ShowError("请先选择需要分析的管线信息,仅可以选择连续的管线!", 2000);
- return;
- }
- DatasetVector _dv = _selection[0].ToRecordset().Dataset as DatasetVector;
- if (_dv.Name != ComsStatic.dvJSLK.Name && _selection[0].Count < 1)
- {
- Sunny.UI.UIMessageTip.ShowError("仅可以选择管线图层,且至少选择一条管线", 2000);
- return;
- }
- DataTable dt = new DataTable { TableName = "DuanMianAnalystResult" };
- DataColumn dataColumn;
- dataColumn = new DataColumn { ColumnName = "dmgc", Caption = "地面高程(M)" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "gdgc", Caption = "管顶高程(M)" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "gdms", Caption = "管点埋深(M)" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "gxgj", Caption = "管线管径(MM)" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "gxcd", Caption = "管线长度(M)" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "gxSMID", Caption = "管线ID" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "gdSMID", Caption = "管点ID" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "x", Caption = "X坐标" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "y", Caption = "Y坐标" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "ygd", Caption = "管顶Y坐标" }; dt.Columns.Add(dataColumn);
- dataColumn = new DataColumn { ColumnName = "xLeft", Caption = "X坐标向左偏移" }; dt.Columns.Add(dataColumn);
-
- DatasetVectorEx dvJSJDPTEx = new DatasetVectorEx(ComsStatic.dvJSJDPT.Name) { DatasetVector = ComsStatic.dvJSJDPT };
- dvJSJDPTEx.ResultFields.Clear();
- DataRow dr;
- DataTable dtJSJDPT;
- dt.Rows.Clear();
- DatasetVectorEx dvJSLKEx = new DatasetVectorEx(_dv.Name) { DatasetVector = _dv };
- dvJSLKEx.ResultFields.Clear();
- DataTable dtJSLK;
- for (int i = 1; i <= _selection[0].Count; i++)
- {
- dtJSLK = dvJSLKEx.Query(string.Format(" smid='{0}' AND qsdh is not null AND zddh is not null", _selection[0][i - 1].ToString()));
- if (dtJSLK.Rows.Count == 1)
- {
- dtJSJDPT = dvJSJDPTEx.Query(string.Format(" wth ='{0}' AND ms is not null ", dtJSLK.Rows[0]["qsdh"].ToString()));
- if (dtJSJDPT.Rows.Count == 1)
- {
- foreach (DataRow drr in dtJSJDPT.Rows)
- {
- dr = dt.NewRow();
- dr["dmgc"] = drr["dmgc"];
- dr["gdgc"] = double.Parse(drr["dmgc"].ToString()) - double.Parse(drr["ms"].ToString());//管顶高程=地面高程-埋深
- dr["gdms"] = string.IsNullOrEmpty(drr["ms"].ToString()) ? "0" : drr["ms"];//dr["gdms"] = drr["ms"];
- dr["gxgj"] = dtJSLK.Rows[0]["gj"];
- dr["gxcd"] = string.IsNullOrEmpty(dtJSLK.Rows[0]["cd"].ToString()) ? "0" : dtJSLK.Rows[0]["cd"];
- dr["gxSMID"] = dtJSLK.Rows[0]["smid"];
- dr["gdSMID"] = drr["smid"].ToString();
- dt.Rows.Add(dr);
- }
- }
- }
- //最后一根管线设置起点点号后,还需要取一下终点点号
- if (i == _selection[0].Count)
- {
- dtJSJDPT = dvJSJDPTEx.Query(string.Format(" wth ='{0}' AND ms is not null ", dtJSLK.Rows[0]["qsdh"].ToString()));
- if (dtJSJDPT.Rows.Count == 1)
- {
- foreach (DataRow drr in dtJSJDPT.Rows)
- {
- dr = dt.NewRow();
- dr["dmgc"] = drr["dmgc"];
- dr["gdgc"] = double.Parse(drr["dmgc"].ToString()) - double.Parse(drr["ms"].ToString());//管顶高程=地面高程-埋深
- dr["gdms"] = string.IsNullOrEmpty(drr["ms"].ToString()) ? "0" : drr["ms"];
- dr["gxgj"] = dtJSLK.Rows[0]["gj"];
- dr["gxcd"] = string.IsNullOrEmpty(dtJSLK.Rows[0]["cd"].ToString()) ? "0" : dtJSLK.Rows[0]["cd"];
- dr["gxSMID"] = dtJSLK.Rows[0]["smid"];
- dr["gdSMID"] = drr["smid"].ToString();
- dt.Rows.Add(dr);
- }
- }
- }
- }
- if (dt.Rows.Count == (_selection[0].Count + 1))
- {
- PouMianAnalystResult form = new PouMianAnalystResult(dt);
- form.ShowDialog();
- this.CloseToolBar();
- }
- else
- {
- Sunny.UI.UIMessageTip.ShowError("构建查询结果失败,请重新选择连续的管线进行分析", 5000);
- }
- }
-
- private void InitializeComponent()
- {
- this.SuspendLayout();
- //
- // ToolsConditions
- //
- this.Name = "ToolsConditions";
- this.ResumeLayout(false);
- }
- }
- }
|