ChaiQian.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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 ChaiQian : BasicToolBar
  12. {
  13. GeoRegion m_geo = null;
  14. public ChaiQian() : base()
  15. {
  16. this.ConditionPanelName = "拆迁分析";
  17. var startDrawToolStripButton = new ToolStripButton()
  18. {
  19. DisplayStyle = ToolStripItemDisplayStyle.ImageAndText,
  20. Text = "绘制拆迁区域",
  21. Name = "StartDraw",
  22. AutoToolTip = false
  23. };
  24. var analystToolStripButton = new ToolStripButton()
  25. {
  26. DisplayStyle = ToolStripItemDisplayStyle.ImageAndText,
  27. Text = "分析",
  28. Name = "Analyst",
  29. AutoToolTip = false
  30. };
  31. base.ToolStrip.Items.Add(startDrawToolStripButton);
  32. base.ToolStrip.Items.Add(analystToolStripButton);
  33. startDrawToolStripButton.Click += StartDrawToolStripButton_Click;
  34. analystToolStripButton.Click += AnalystToolStripButton_Click;
  35. }
  36. private void AnalystToolStripButton_Click(object sender, EventArgs e)
  37. {
  38. if (m_geo is null) { Sunny.UI.UIMessageTip.ShowError("请先绘制拆迁区域"); return; }
  39. DataSet dtsLayer = new DataSet();
  40. DatasetVector dv;
  41. Recordset ds;
  42. DataTable dt;
  43. //foreach (LayerEx lyr in ComsStatic.layerExs)
  44. //{
  45. // dv = ComsStatic.Datasource.Datasets[lyr.Dataset] as DatasetVector;
  46. // if (dv is null) continue;
  47. // ds = dv.Query(m_geo, 0, CursorType.Static);
  48. // if (ds is null) continue;
  49. // dt = ComsStatic.RecordsetToDataTable(ds);
  50. // if (dt.Rows.Count == 0) continue;
  51. // dt.TableName = string.Format("{0} 影响{1}个", lyr.Caption, dt.Rows.Count);
  52. // dtsLayer.Tables.Add(dt);
  53. //}
  54. DataTable dtLayers = ComsStatic.getLayers();
  55. foreach (DataRow dr in dtLayers.Rows)
  56. {
  57. dv = ComsStatic.Datasource.Datasets[dr["LayerDatasetName"].ToString()] as DatasetVector;
  58. if (dv is null) continue;
  59. ds = dv.Query(m_geo, 0, CursorType.Static);
  60. if (ds is null) continue;
  61. dt = MapBasic.ComsStatic.RecordsetToDataTable(ds);
  62. if (dt.Rows.Count == 0) continue;
  63. dt.TableName = string.Format("{0} 影响{1}个", dr["LayerCaption"], dt.Rows.Count);
  64. dtsLayer.Tables.Add(dt);
  65. }
  66. AnalystResultTabControl from = new AnalystResultTabControl(dtsLayer, "拆迁分析结果");
  67. from.ShowDialog();
  68. this.CloseToolBar();
  69. }
  70. private void MapControl_Tracked(object sender, SuperMap.UI.TrackedEventArgs e)
  71. {
  72. if (e.Geometry is null) return;
  73. m_geo = e.Geometry.Clone() as GeoRegion;
  74. if (m_geo is null) { Sunny.UI.UIMessageTip.ShowError("区域绘制失败"); return; }
  75. m_geo.Style = ComsStatic.geoStyle_Red_1mm_OpaqueRate;
  76. MapControl.Map.TrackingLayer.Clear();
  77. MapControl.Map.TrackingLayer.Add(m_geo, "GeoRectangle");
  78. MapControl.Map.RefreshEx(MapControl.Map.ViewBounds);
  79. }
  80. private void StartDrawToolStripButton_Click(object sender, EventArgs e)
  81. {
  82. MapControl.Map.TrackingLayer.Clear();
  83. MapControl.Action = SuperMap.UI.Action.CreatePolygon;
  84. MapControl.Tracked += MapControl_Tracked;
  85. }
  86. public override void AfterClose()
  87. {
  88. MapControl.Tracked -= MapControl_Tracked;
  89. base.AfterClose();
  90. }
  91. private void InitializeComponent()
  92. {
  93. this.SuspendLayout();
  94. //
  95. // ToolsConditions
  96. //
  97. this.Name = "ToolsConditions";
  98. this.ResumeLayout(false);
  99. }
  100. }
  101. }