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); } } }