123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
-
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using ESRI.ArcGIS.Geodatabase;
- using ESRI.ArcGIS.esriSystem;
- using ESRI.ArcGIS.EditorExt;
- using Tofly.GIS.ArcGIS.Util;
- using Tofly.GIS.Carto;
- using Tofly.GIS.Util;
- using Tofly.GIS.SpatialAnalysis.ArcGIS;
- namespace GNetworkProcessTool
- {
- public partial class FormNetworkLoader : Form
- {
- #region 私有方法
-
-
-
- private void LoadDataByGNIncrementalLoader(IWorkspace wsSDE, string userID, Dictionary<string, IFeatureClass> dicFGDBClass)
- {
- GNUtility.Initialize(wsSDE, true, userID);
- IGeometricNetwork __gnProcessing = GNUtility.GetGNetworlByName(AppConfig.GeometryNetworkName);
-
-
-
-
-
-
- IGeometricNetworkName __gnName = (IGeometricNetworkName)(__gnProcessing as IDataset).FullName;
- IEnumNameEdit __enumNameEdit = new NamesEnumeratorClass();
- #region 获取导入要素类名称集合
- IFeatureClassName __flnName;
- foreach (var __kvFClassGDB in dicFGDBClass)
- {
- if ((__kvFClassGDB.Value as ITable).RowCount(null) > 0)
- {
- __flnName = (__kvFClassGDB.Value as IDataset).FullName as IFeatureClassName;
- __enumNameEdit.Add(__flnName as IName);
- break;
- }
- }
- #endregion
- IGeometricNetworkIncrementalLoader __gnIncrementalLoader = new GNIncrementalLoaderClass();
- IEnumNameMapping __fcMapping = null;
- IPropertySet __unmappedFields;
- string __strSpatialRef = (dicFGDBClass.ElementAt(0).Value as IGeoDataset).SpatialReference.Name;
- string __strSpatialRef2 = (__gnProcessing as IGeoDataset).SpatialReference.Name;
- IEnumName __enumName = __enumNameEdit as IEnumName;
- __enumName.Reset();
- __gnIncrementalLoader.GenerateNameMapping(__enumName, __gnName, out __fcMapping, out __unmappedFields);
- __fcMapping.Reset();
- INameMapping __nameMapping = null;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- string __strMappingClass = "";
- __fcMapping.Reset();
- while ((__nameMapping = __fcMapping.Next()) != null)
- {
- __strMappingClass += __nameMapping.TargetName + " " + (__nameMapping.SourceObject as IDatasetName).Name + ";";
- }
- __fcMapping.Reset();
- __gnIncrementalLoader.GetUnmappedTargetFields(__gnProcessing, __fcMapping, __unmappedFields);
- __gnIncrementalLoader.LoadNetwork(__fcMapping, __gnProcessing);
- }
- #endregion
- public FormNetworkLoader()
- {
- InitializeComponent();
- }
- private void FormNetworkLoader_Shown(object sender, EventArgs e)
- {
- #region 加载地图
-
- ESRI.ArcGIS.Carto.IMapDocument __mapDoc = new ESRI.ArcGIS.Carto.MapDocumentClass();
- __mapDoc.Open(string.Format(@"{0}\Default.mxd", Application.StartupPath));
- ESRI.ArcGIS.Carto.IMap __mapData = __mapDoc.Map[0];
- this.MapControl.Map = __mapData;
- this.MapControl.ActiveView.PartialRefresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGeography, null, this.MapControl.ActiveView.Extent);
- __mapDoc.Close();
- #endregion
- }
- private void btnOpenGDB_Click(object sender, EventArgs e)
- {
- FolderBrowserDialog __folderDia = new FolderBrowserDialog() { ShowNewFolderButton = false };
- if(__folderDia.ShowDialog() == DialogResult.OK)
- {
- this.txtGDBFile.Text = __folderDia.SelectedPath;
- }
-
-
-
-
-
-
-
-
- }
- private void btnImport_Click(object sender, EventArgs e)
- {
- try
- {
- IMap __cmap = new Tofly.GIS.ArcGIS.Carto.MapClass(this.MapControl.Map);
- List<IFeatureLayer> __lstGNLayer = new List<IFeatureLayer>(__cmap.GetShowFeatureLayersByMap());
- List<ESRI.ArcGIS.Carto.IFeatureLayer> __lstESRIGNLayer = __lstGNLayer.Select(layer => layer.InnerObject as ESRI.ArcGIS.Carto.IFeatureLayer).ToList();
- __lstESRIGNLayer.RemoveAll(layer => layer.FeatureClass == null || layer.FeatureClass.FeatureDataset == null);
- __lstESRIGNLayer.RemoveAll(layer => layer.FeatureClass.FeatureDataset == null || layer.FeatureClass.FeatureDataset.Name.IndexOf(AppConfig.GWDatasetName, StringComparison.OrdinalIgnoreCase) == -1);
- IWorkspace __wsFileGDB = GeoDataSourceHelper.FileGdbWorkspaceFromPath(this.txtGDBFile.Text);
- IFeatureDataset __fdsetGASDATASET_GDB = (__wsFileGDB as IFeatureWorkspace).OpenFeatureDataset("GASDATASET");
- Dictionary<string, IFeatureClass> __dicFileGDBFeatureClass = DataOperateHelper.GetFeatureClassFromDataset(__wsFileGDB as IFeatureWorkspace, __fdsetGASDATASET_GDB, new List<string>());
- IWorkspace __wsSDE = (__lstESRIGNLayer[0].FeatureClass as IDataset).Workspace;
- GeoDataSourceHelper __geoDSHelper = new GeoDataSourceHelper();
- Dictionary<string,object> __dicParameters = __geoDSHelper.GetSdeDataSourceParameters(__wsSDE);
- string __strUserID = (__dicParameters.ContainsKey("USER") ? Convert.ToString(__dicParameters["USER"]) : "");
- string __strDSetName = (string.IsNullOrEmpty(__strUserID) ? "" : __strUserID + ".") + "GASDATASET";
- IFeatureDataset __fdsetGASDATASET_SDE = (__wsSDE as IFeatureWorkspace).OpenFeatureDataset(__strDSetName);
- Dictionary<string, IFeatureClass> __dicSDEFeatureClass = DataOperateHelper.GetFeatureClassFromDataset(__wsSDE as IFeatureWorkspace, __fdsetGASDATASET_SDE, new List<string>());
- IWorkspaceEdit2 __wseSDEProcessing = __wsSDE as IWorkspaceEdit2;
- __wseSDEProcessing.StartEditing(true);
- __wseSDEProcessing.StartEditOperation();
- try
- {
- this.LoadDataByGNIncrementalLoader(__wsSDE, __strUserID, __dicFileGDBFeatureClass);
- __wseSDEProcessing.StopEditOperation();
- }
- catch (System.Exception ex)
- {
- __wseSDEProcessing.AbortEditOperation();
- throw new System.Exception("数据入库错误|" + ex.Message);
- }
- }
- catch(System.Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- }
- }
|