PouMian.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. using SuperMap.Data;
  2. using SuperMap.Mapping;
  3. using System;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7. using WWPipeLine.MapBasic;
  8. using WWPipeLine.MapBasic.Conditions;
  9. namespace WWPipeLine.MapTools.Conditions.AnalystToolBar
  10. {
  11. public class PouMian : BasicToolBar
  12. {
  13. public PouMian() : base()
  14. {
  15. this.ConditionPanelName = "剖面分析";
  16. var analystToolStripButton = new ToolStripButton()
  17. {
  18. DisplayStyle = ToolStripItemDisplayStyle.ImageAndText,
  19. Text = "分析",
  20. Name = "Analyst",
  21. AutoToolTip = false
  22. };
  23. base.ToolStrip.Items.Add(analystToolStripButton);
  24. analystToolStripButton.Click += AnalystToolStripButton_Click;
  25. }
  26. private void AnalystToolStripButton_Click(object sender, EventArgs e)
  27. {
  28. Selection[] _selection = base.MapControl.Map.FindSelection(true);
  29. if (_selection.Length == 0 || _selection == null)
  30. {
  31. Sunny.UI.UIMessageTip.ShowError("请先选择需要分析的管线信息,仅可以选择连续的管线!", 2000);
  32. return;
  33. }
  34. Recordset _recordset = _selection[0].ToRecordset();
  35. DatasetVector _dv = _recordset.Dataset as DatasetVector;
  36. if (_dv.Name != "JSLK" || _recordset.RecordCount < 1)
  37. {
  38. Sunny.UI.UIMessageTip.ShowError("仅可以选择管线图层,且至少选择一条管线", 2000);
  39. return;
  40. }
  41. //这里还需要判断选择的管线是否连续
  42. DataTable dt = new DataTable { TableName = "DuanMianAnalystResult" };
  43. DataColumn dataColumn;
  44. dataColumn = new DataColumn { ColumnName = "dmgc", Caption = "地面高程(M)" }; dt.Columns.Add(dataColumn);
  45. dataColumn = new DataColumn { ColumnName = "gdgc", Caption = "管顶高程(M)" }; dt.Columns.Add(dataColumn);
  46. dataColumn = new DataColumn { ColumnName = "gdms", Caption = "管点埋深(M)" }; dt.Columns.Add(dataColumn);
  47. dataColumn = new DataColumn { ColumnName = "gxgj", Caption = "管线管径(MM)" }; dt.Columns.Add(dataColumn);
  48. dataColumn = new DataColumn { ColumnName = "gxcd", Caption = "管线长度(M)" }; dt.Columns.Add(dataColumn);
  49. dataColumn = new DataColumn { ColumnName = "gxSMID", Caption = "管线ID" }; dt.Columns.Add(dataColumn);
  50. dataColumn = new DataColumn { ColumnName = "gdSMID", Caption = "管点ID" }; dt.Columns.Add(dataColumn);
  51. dataColumn = new DataColumn { ColumnName = "x", Caption = "X坐标" }; dt.Columns.Add(dataColumn);
  52. dataColumn = new DataColumn { ColumnName = "y", Caption = "Y坐标" }; dt.Columns.Add(dataColumn);
  53. DatasetVector dvJSJDPT = this.DatasourceMapControl.Datasets["JSJDPT"] as DatasetVector;
  54. DatasetVectorEx dvJSJDPTEx = new DatasetVectorEx(dvJSJDPT.Name) { DatasetVector = dvJSJDPT };
  55. dvJSJDPTEx.ResultFields.Clear();
  56. DataRow dr;
  57. DataTable dtJSJDPT;
  58. dt.Rows.Clear();
  59. _recordset.MoveFirst();
  60. for (int i = 1; i <= _recordset.RecordCount; i++)
  61. {
  62. if (i == _recordset.RecordCount)
  63. dtJSJDPT = dvJSJDPTEx.Query(string.Format(" (wth ='{0}' OR wth='{1}') AND ms is not null ", _recordset.GetFieldValue("qsdh").ToString(), _recordset.GetFieldValue("zddh").ToString()));
  64. else
  65. dtJSJDPT = dvJSJDPTEx.Query(string.Format(" wth ='{0}' AND ms is not null ", _recordset.GetFieldValue("qsdh").ToString()));
  66. if (dtJSJDPT.Rows.Count == 1 || dtJSJDPT.Rows.Count == 2)
  67. {
  68. foreach (DataRow drr in dtJSJDPT.Rows)
  69. {
  70. dr = dt.NewRow();
  71. dr["dmgc"] = drr["dmgc"];
  72. dr["gdgc"] = double.Parse(drr["dmgc"].ToString()) - double.Parse(drr["ms"].ToString());//管顶高程=地面高程-埋深
  73. dr["gdms"] = drr["ms"];
  74. dr["gxgj"] = _recordset.GetFieldValue("gj");
  75. dr["gxcd"] = _recordset.GetFieldValue("cd");
  76. dr["gxSMID"] = _recordset.GetFieldValue("smid");
  77. dr["gdSMID"] = drr["smid"].ToString() + "-" + drr["wth"].ToString();
  78. dt.Rows.Add(dr);
  79. }
  80. }
  81. _recordset.MoveNext();
  82. }
  83. if (dt.Rows.Count == (_recordset.RecordCount + 1))
  84. {
  85. _recordset.Close(); _recordset.Dispose();
  86. PouMianAnalystResult form = new PouMianAnalystResult(dt);
  87. form.ShowDialog();
  88. }
  89. else
  90. {
  91. _recordset.Close(); _recordset.Dispose();
  92. Sunny.UI.UIMessageTip.ShowError("构建查询结果失败", 2000);
  93. }
  94. }
  95. protected override void OnLoad(EventArgs e)
  96. {
  97. }
  98. private void InitializeComponent()
  99. {
  100. this.SuspendLayout();
  101. //
  102. // ToolsConditions
  103. //
  104. this.Name = "ToolsConditions";
  105. this.ResumeLayout(false);
  106. }
  107. }
  108. }