GDshuliang.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. using SuperMap.Data;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using WeifenLuo.WinFormsUI.Docking;
  6. using WWPipeLine.MapBasic.Conditions;
  7. using WWPipeLine.MapBasic;
  8. using SuperMap.Mapping;
  9. namespace WWPipeLine.MapTools.Conditions.Statistics
  10. {
  11. public partial class GDshuliang : ConditionPanel
  12. {
  13. private LayerWithDataListPanel LayerPanel;
  14. public bool isGeo = false;
  15. public GDshuliang() : base()
  16. {
  17. this.ConditionPanelName = "管点数量统计";
  18. this.SetSize(300, 300);
  19. InitializeComponent();
  20. }
  21. protected override void OnLoad(EventArgs e)
  22. {
  23. LayerPanel = new LayerWithDataListPanel();
  24. LayerPanel.LoadToVector(true, false);
  25. this.Controls.Add(LayerPanel);
  26. }
  27. public override object Do(DockPanel dockPanel = null)
  28. {
  29. if (LayerPanel.SelectLayers.Count == 0)
  30. {
  31. Sunny.UI.UIMessageTip.ShowError("请先选择需要查询的图层"); return false;
  32. }
  33. if (isGeo)
  34. {
  35. if (MapControl.Map.TrackingLayer.IndexOf(ComsStatic.ControlToolsTrackingName) == -1)
  36. {
  37. Sunny.UI.UIMessageTip.ShowError("请先绘制区域"); return false;
  38. }
  39. }
  40. DataTable dt = new DataTable() { TableName = "管点数量统计结果" };
  41. #region 一行标题,一行结果,多列
  42. DataRow dr;
  43. dt.Columns.Add("统计图层");
  44. foreach (Layer lyr in LayerPanel.SelectLayers)
  45. {
  46. dt.Columns.Add(lyr.Caption);
  47. }
  48. dr = dt.NewRow(); dr["统计图层"] = "管点数量";
  49. DatasetVector dv;
  50. if (isGeo)
  51. {
  52. GeoRegion geo = MapControl.Map.TrackingLayer.Get(MapControl.Map.TrackingLayer.IndexOf(ComsStatic.ControlToolsTrackingName)) as GeoRegion;
  53. Recordset rd = null;
  54. foreach (Layer lyr in LayerPanel.SelectLayers)
  55. {
  56. dv = lyr.Dataset as DatasetVector;
  57. rd = dv.Query(geo, 1, CursorType.Static);
  58. dr[lyr.Caption] = rd.RecordCount;
  59. }
  60. ComsStatic.RecordsetDispose(rd);
  61. }
  62. else
  63. {
  64. foreach (Layer lyr in LayerPanel.SelectLayers)
  65. {
  66. dv = lyr.Dataset as DatasetVector;
  67. dr[lyr.Caption] = dv.RecordCount;
  68. }
  69. }
  70. dt.Rows.Add(dr);
  71. #endregion
  72. #region 一行标题 一列结果 多行
  73. //DataRow dr;
  74. //dt.Columns.Add("统计图层"); dt.Columns.Add("管点数量");
  75. //DatasetVector dv;
  76. //foreach (Layer lyr in LayerPanel.SelectLayers)
  77. //{
  78. // dr = dt.NewRow();
  79. // dr["统计图层"] = lyr.Caption;
  80. // dv = lyr.Dataset as DatasetVector;
  81. // dr["管点数量"] = dv.RecordCount;
  82. // dt.Rows.Add(dr);
  83. //}
  84. #endregion
  85. return dt;
  86. }
  87. }
  88. }