123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Drawing;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using WWPipeLine.MapBasic.Conditions;
- using Sunny.UI;
- using WeifenLuo.WinFormsUI.Docking;
- using SuperMap.Mapping;
- using WWPipeLine.MapBasic;
- using SuperMap.Data.Conversion;
- using SuperMap.Data;
- namespace WWPipeLine.MapTools.Conditions.ShuJuChuLi
- {
- public partial class OutGIScj : ConditionPanel
- {
- private LayerWithDataListPanel LayerPanel;
- private string fileName = string.Empty;
- private GeoRegion m_geo = null;
- public OutGIScj()
- {
- this.ConditionPanelName = "地图裁剪输出GIS数据文件";
- InitializeComponent();
- this.SetSize(500, 485);
- }
- protected override void OnLoad(EventArgs e)
- {
- LayerPanel = new LayerWithDataListPanel();
- LayerPanel.LoadToVector(true, true, true);
- uiGBlayer.Controls.Add(LayerPanel);
- }
- private void uiButton1_Click(object sender, EventArgs e)
- {
- SaveFileDialog sfd = new SaveFileDialog();
- sfd.InitialDirectory = System.Environment.GetFolderPath(System.Environment.SpecialFolder.DesktopDirectory);
- sfd.Title = "请选择要保存的文件路径";
- sfd.Filter = "所有文件|*.*";
- sfd.RestoreDirectory = true;
- if (sfd.ShowDialog() == DialogResult.OK)
- {
- fileName = sfd.FileName;
- uiTextBox1.Text = fileName;
- }
- }
- public override object Do(DockPanel dockPanel = null)
- {
- this.IsShowResultWindow = false;
- if (string.IsNullOrEmpty(fileName))
- { UIMessageTip.ShowError("请选择要保存文件的路径"); return false; }
- if (LayerPanel.SelectLayers.Count == 0)
- { UIMessageTip.ShowError("请选择要保存文件的图层"); return false; }
- if (m_geo is null)
- { Sunny.UI.UIMessageTip.ShowError("请绘制裁剪区域"); return false; }
- //dviName = ComsStatic.Datasource.Datasets.GetAvailableDatasetName("OutGIS_dvName");
- ////Recordset rd = (LayerPanel.SelectLayers[0].Dataset as DatasetVector).Query(m_geo, 2, CursorType.Static);
- ////DatasetVector dvFinal = ComsStatic.Datasource.Datasets.CreateAndAppendWithSmid(dviName, rd);
- ////DatasetVectorInfo dvi = new DatasetVectorInfo() { Name = dviName, Type = DatasetType.CAD };
- ////DatasetVector dvFinal = ComsStatic.Datasource.Datasets.Create(dvi);
- ////DatasetVector dv = null;
- ////foreach (Layer lyr in LayerPanel.SelectLayers.ToArray())
- ////{
- //// dv = lyr.Dataset as DatasetVector;
- //// bool result = dvFinal.AppendFields(dv, "objectid", "smuserid", ComsStatic.GetFieldInfos(dv));
- //// dvFinal.Append(dv.Query(m_geo, 2, CursorType.Static));
- ////}
- //DatasetVector dv = LayerPanel.SelectLayers[0].Dataset as DatasetVector;
- //DatasetVectorInfo dvi = new DatasetVectorInfo() { Name = dviName, Type = dv.Type };
- //DatasetVector dvFinal = ComsStatic.Datasource.Datasets.Create(dvi);
- //bool result = dvFinal.AppendFields(dv, "objectid", "smuserid", ComsStatic.GetFieldInfos(dv));
- ////Datasets.Create后的字段只有系统字段,我需要一个 字符类型的字段 如何先创建再与元数据集 关联
- ////从源数据集向目标数据集追加字段,并根据关联字段查询结果对字段进行赋值。
- //dvFinal.Append(dv.Query(m_geo, 2, CursorType.Static));
- //DataExport ex = new DataExport();
- //if (uiRadioButtonCSV.Checked)//ExportSettingCSV
- //{
- // ExportSetting es = new ExportSetting();
- // //es.IsExportFieldName = true;
- // es.TargetFileType = FileType.CSV;
- // es.TargetFilePath = fileName;
- // es.IsOverwrite = true;
- // es.SourceData = dvFinal;
- // ex.ExportSettings.Add(es);
- //}
- //if (uiRadioButtonGDB.Checked)//ExportSettingFileGDBVector
- //{
- // ExportSetting es = new ExportSetting();
- // es.TargetFileType = FileType.FileGDBVector;
- // es.TargetFilePath = fileName;
- // es.IsOverwrite = true;
- // es.SourceData = dvFinal;
- // ex.ExportSettings.Add(es);
- //}
- //if (uiRadioButtonSHP.Checked)//ExportSettingSHP
- //{
- // ExportSetting es = new ExportSetting();
- // es.TargetFileType = FileType.SHP;
- // es.TargetFilePath = fileName;
- // es.IsOverwrite = true;
- // es.SourceData = dvFinal;
- // ex.ExportSettings.Add(es);
- //}
- //if (uiRadioButtonSimpleJson.Checked)//ExportSettingPersonalGDBVector
- //{
- // ExportSetting es = new ExportSetting();
- // es.TargetFileType = FileType.SimpleJson;
- // es.TargetFilePath = fileName;
- // es.IsOverwrite = true;
- // es.SourceData = dvFinal;
- // ex.ExportSettings.Add(es);
- //}
- FileType outFileType = FileType.None;
- DataExport ex = new DataExport();
- if (uiRadioButtonCSV.Checked)//ExportSettingCSV
- {
- outFileType = FileType.CSV;
- }
- if (uiRadioButtonGDB.Checked)//ExportSettingFileGDBVector
- {
- outFileType = FileType.FileGDBVector;
- }
- if (uiRadioButtonSHP.Checked)//ExportSettingSHP
- {
- outFileType = FileType.SHP;
- }
- if (uiRadioButtonSimpleJson.Checked)//ExportSettingPersonalGDBVector
- {
- outFileType = FileType.SimpleJson;
- }
- List<string> divNameList = new List<string>();
- string dviName = string.Empty;
- foreach (Layer lyr in LayerPanel.SelectLayers)
- {
- ExportSetting es = new ExportSetting();
- es.TargetFileType = outFileType;
- es.TargetFilePath = fileName + "-" + DateTime.Now.Ticks.ToString();
- dviName = ComsStatic.Datasource.Datasets.GetAvailableDatasetName("OutGIS_dvName");
- divNameList.Add(dviName);
- DatasetVector dv = lyr.Dataset as DatasetVector;
- DatasetVectorInfo dvi = new DatasetVectorInfo() { Name = dviName, Type = dv.Type };
- DatasetVector dvFinal = ComsStatic.Datasource.Datasets.Create(dvi);
- bool result = dvFinal.AppendFields(dv, "SmUserID", "smuserid", ComsStatic.GetFieldInfos(dv));
- //Recordset rd = (lyr.Dataset as DatasetVector).Query(m_geo, 2, CursorType.Static);
- //DatasetVector dvFinal = ComsStatic.Datasource.Datasets.CreateAndAppendWithSmid(dviName, rd);
- es.SourceData = dvFinal;
- ex.ExportSettings.Add(es);
- }
- ExportResult exResult = ex.Run();
- if (ex.ExportSettings.Count == exResult.SucceedSettings.Length)
- ComsStatic.ShowOKLog(string.Format("地图导出GIS数据,应导出{0}条,共导出{1}条", ex.ExportSettings.Count, exResult.SucceedSettings.Length));
- else
- ComsStatic.ShowErrorLog(string.Format("地图导出GIS数据,应导出{0}条,失败导出{1}条", ex.ExportSettings.Count, exResult.FailedSettings.Length));
- foreach (string n in divNameList.ToArray())
- {
- if (ComsStatic.Datasource.Datasets.Contains(n))
- ComsStatic.Datasource.Datasets.Delete(n);
- }
- return true;
- }
- private void uiButton2_Click(object sender, EventArgs e)
- {
- MapControl.Action = SuperMap.UI.Action.CreatePolygon;
- MapControl.Tracked += MapControl_Tracked;
- }
- private void uiButton3_Click(object sender, EventArgs e)
- {
- MapControl.Action = SuperMap.UI.Action.Pan;
- MapControl.Map.TrackingLayer.Clear();
- MapControl.Map.RefreshEx(MapControl.Map.ViewBounds);
- }
- private void MapControl_Tracked(object sender, SuperMap.UI.TrackedEventArgs e)
- {
- if (e.Geometry is null) return;
- m_geo = e.Geometry.Clone() as GeoRegion;
- if (m_geo is null) { Sunny.UI.UIMessageTip.ShowError("区域绘制失败"); return; }
- m_geo.Style = ComsStatic.geoStyle_Red_1mm_OpaqueRate;
- MapControl.Map.TrackingLayer.Clear();
- MapControl.Map.TrackingLayer.Add(m_geo, "GeoRectangle");
- MapControl.Map.Refresh();
- }
- public override void AfterClose()
- {
- MapControl.Tracked -= MapControl_Tracked;
- base.AfterClose();
- }
- }
- }
|