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; } private void AnalystToolStripButton_Click(object sender, EventArgs e) { Selection[] _selection = base.MapControl.Map.FindSelection(true); if (_selection.Length == 0 || _selection == null) { Sunny.UI.UIMessageTip.ShowError("请先选择需要分析的管线信息,仅可以选择连续的管线!", 2000); return; } Recordset _recordset = _selection[0].ToRecordset(); DatasetVector _dv = _recordset.Dataset as DatasetVector; if (_dv.Name != "JSLK" || _recordset.RecordCount < 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); DatasetVector dvJSJDPT = this.DatasourceMapControl.Datasets["JSJDPT"] as DatasetVector; DatasetVectorEx dvJSJDPTEx = new DatasetVectorEx(dvJSJDPT.Name) { DatasetVector = dvJSJDPT }; dvJSJDPTEx.ResultFields.Clear(); DataRow dr; DataTable dtJSJDPT; dt.Rows.Clear(); _recordset.MoveFirst(); for (int i = 1; i <= _recordset.RecordCount; i++) { if (i == _recordset.RecordCount) dtJSJDPT = dvJSJDPTEx.Query(string.Format(" (wth ='{0}' OR wth='{1}') AND ms is not null ", _recordset.GetFieldValue("qsdh").ToString(), _recordset.GetFieldValue("zddh").ToString())); else dtJSJDPT = dvJSJDPTEx.Query(string.Format(" wth ='{0}' AND ms is not null ", _recordset.GetFieldValue("qsdh").ToString())); if (dtJSJDPT.Rows.Count == 1 || dtJSJDPT.Rows.Count == 2) { 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"] = drr["ms"]; dr["gxgj"] = _recordset.GetFieldValue("gj"); dr["gxcd"] = _recordset.GetFieldValue("cd"); dr["gxSMID"] = _recordset.GetFieldValue("smid"); dr["gdSMID"] = drr["smid"].ToString() + "-" + drr["wth"].ToString(); dt.Rows.Add(dr); } } _recordset.MoveNext(); } if (dt.Rows.Count == (_recordset.RecordCount + 1)) { _recordset.Close(); _recordset.Dispose(); PouMianAnalystResult form = new PouMianAnalystResult(dt); form.ShowDialog(); } else { _recordset.Close(); _recordset.Dispose(); Sunny.UI.UIMessageTip.ShowError("构建查询结果失败", 2000); } } protected override void OnLoad(EventArgs e) { } private void InitializeComponent() { this.SuspendLayout(); // // ToolsConditions // this.Name = "ToolsConditions"; this.ResumeLayout(false); } } }