| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- using SuperMap.Data;
- using SuperMap.Mapping;
- using System;
- using System.Collections.Generic;
- 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
- {
- DataTable dtSelect;
- 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.gsGuanXian.Name, true);
- MapControl.GeometrySelectChanged += MapControl_GeometrySelectChanged;
- MapControl.Action = SuperMap.UI.Action.Select;
- dtSelect = new DataTable();
- dtSelect.Columns.Add("smid"); dtSelect.Columns.Add("qsdh"); dtSelect.Columns.Add("zddh"); dtSelect.Columns.Add("gj"); dtSelect.Columns.Add("cd");
- }
- private void MapControl_GeometrySelectChanged(object sender, SuperMap.UI.GeometrySelectChangedEventArgs e)
- {
- Selection[] sl = MapControl.Map.FindSelection(true);
- if (sl.Length != 1 || sl[0].Count != 1 || sl[0].Dataset.Name != ComsStatic.gsGuanXian.Name)
- {
- Sunny.UI.UIMessageTip.ShowError("请选择一根需要分析的管线"); return;
- }//sl[0].Count - 1
- Recordset rd = ComsStatic.QueryRecordset(ComsStatic.gsGuanXian, string.Format(" enabled=1 and smid={0} AND qsdh is not null AND zddh is not null ", sl[0][0]), new string[] { "smid", "qsdh", "zddh", "gj", "cd" });
- if (rd.RecordCount == 1)
- {
- DataRow dr = dtSelect.NewRow();
- dr["smid"] = rd.GetFieldValue("smid");
- dr["qsdh"] = rd.GetFieldValue("qsdh");
- dr["zddh"] = rd.GetFieldValue("zddh");
- dr["gj"] = rd.GetFieldValue("gj");
- dr["cd"] = rd.GetFieldValue("cd");
- dtSelect.Rows.Add(dr);
- if (dtSelect.Rows.Count > 1)//需要判断当前选择的管线起点 是否是 上一根管线的终点
- {
- string zddh = dtSelect.Rows[dtSelect.Rows.Count - 2]["zddh"].ToString();
- string qsdh = dtSelect.Rows[dtSelect.Rows.Count - 1]["qsdh"].ToString();
- if (zddh != qsdh)
- {
- dtSelect.Rows.Clear();
- Sunny.UI.UIMessageTip.ShowError("当前选择管线的不是连续管线,请重新选择");
- return;
- }
- }
- }
- else
- {
- dtSelect.Rows.Clear();
- Sunny.UI.UIMessageTip.ShowError("当前选择管线的信息错误,请重新选择!");
- return;
- }
- }
- private void AnalystToolStripButton_Click(object sender, EventArgs e)
- {
- if (dtSelect.Rows.Count == 0)
- {
- Sunny.UI.UIMessageTip.ShowError("请先选择需要分析的管线信息,仅可以选择连续的管线!"); return;
- }
- DataTable dt = new DataTable { TableName = "DuanMianAnalystResult" };
- dt.Columns.Add(new DataColumn { ColumnName = "dmgc", Caption = "地面高程(M)" });
- dt.Columns.Add(new DataColumn { ColumnName = "gdgc", Caption = "管顶高程(M)" });
- dt.Columns.Add(new DataColumn { ColumnName = "gdms", Caption = "管点埋深(M)" });
- dt.Columns.Add(new DataColumn { ColumnName = "gxgj", Caption = "管线管径(MM)" });
- dt.Columns.Add(new DataColumn { ColumnName = "gxcd", Caption = "管线长度(M)" });
- dt.Columns.Add(new DataColumn { ColumnName = "gxSMID", Caption = "管线ID" });
- dt.Columns.Add(new DataColumn { ColumnName = "gdSMID", Caption = "管点ID" });
- dt.Columns.Add(new DataColumn { ColumnName = "x", Caption = "X坐标" });
- dt.Columns.Add(new DataColumn { ColumnName = "y", Caption = "Y坐标" });
- dt.Columns.Add(new DataColumn { ColumnName = "ygd", Caption = "管顶Y坐标" });
- dt.Columns.Add(new DataColumn { ColumnName = "xLeft", Caption = "X坐标向左偏移", DataType = Type.GetType("System.Double") });
- Recordset rdJSJDPT = null;
- foreach (DataRow drSelect in dtSelect.Rows)
- {
- rdJSJDPT = ComsStatic.QueryRecordset(ComsStatic.gsGuanDian, string.Format(" bsm ='{0}' ", drSelect["qsdh"]));
- if (rdJSJDPT.RecordCount == 1)
- {
- rdJSJDPT.MoveFirst();
- DataRow dr = dt.NewRow();
- dr["dmgc"] = rdJSJDPT.GetFieldValue("dmgc");
- dr["gdms"] = rdJSJDPT.GetFieldValue("ms");
- dr["gdgc"] = ComsStatic.StringToDouble(dr["dmgc"]) - ComsStatic.StringToDouble(dr["gdms"]);//管顶高程=地面高程-埋深
- dr["gxgj"] = drSelect["gj"];
- dr["gxcd"] = drSelect["cd"];
- dr["gxSMID"] = drSelect["smid"];
- dr["gdSMID"] = rdJSJDPT.GetFieldValue("smid");
- dt.Rows.Add(dr);
- }
- if (dtSelect.Rows.IndexOf(drSelect) == dtSelect.Rows.Count - 1)//最后一根管线需要获取终点点号信息
- {
- rdJSJDPT = ComsStatic.QueryRecordset(ComsStatic.gsGuanDian, string.Format(" bsm ='{0}' ", drSelect["zddh"]));
- if (rdJSJDPT.RecordCount == 1)
- {
- rdJSJDPT.MoveFirst();
- DataRow dr = dt.NewRow();
- dr["dmgc"] = rdJSJDPT.GetFieldValue("dmgc");
- dr["gdms"] = rdJSJDPT.GetFieldValue("ms");
- dr["gdgc"] = ComsStatic.StringToDouble(dr["dmgc"]) - ComsStatic.StringToDouble(dr["gdms"]);//管顶高程=地面高程-埋深
- dr["gxgj"] = drSelect["gj"];
- dr["gxcd"] = drSelect["cd"];
- dr["gxSMID"] = drSelect["smid"];
- dr["gdSMID"] = rdJSJDPT.GetFieldValue("smid");
- dt.Rows.Add(dr);
- }
- }
- }
- if (dt.Rows.Count == (dtSelect.Rows.Count + 1))
- {
- ComsStatic.RecordsetDispose(rdJSJDPT);
- AnalystResultPouDuanMian form = new AnalystResultPouDuanMian(dt, "poumian");
- form.ShowDialog();
- this.CloseToolBar();
- }
- else
- {
- Sunny.UI.UIMessageTip.ShowError("构建查询结果失败,请重新选择连续的管线进行分析");
- }
- }
- public override void AfterClose()
- {
- MapControl.GeometrySelectChanged -= MapControl_GeometrySelectChanged;
- base.AfterClose();
- }
- private void InitializeComponent()
- {
- this.SuspendLayout();
- //
- // ToolsConditions
- //
- this.Name = "ToolsConditions";
- this.ResumeLayout(false);
- }
- }
- }
|