internal static IName RicavaDatasetName(IDataset datasetInput, IWorkspaceName workspaceName) { IDatasetName datasetName = null; switch (datasetInput.Type) { case esriDatasetType.esriDTFeatureDataset: IFeatureDatasetName InFeatureDatasetName = new FeatureDatasetNameClass(); datasetName = (IDatasetName)InFeatureDatasetName; break; case esriDatasetType.esriDTFeatureClass: IFeatureClassName InFeatureClassName = new FeatureClassNameClass(); datasetName = (IDatasetName)InFeatureClassName; break; case esriDatasetType.esriDTTable: ITableName InTableName = new TableNameClass(); datasetName = (IDatasetName)InTableName; break; case esriDatasetType.esriDTGeometricNetwork: IGeometricNetworkName InGeometricNetworkName = new GeometricNetworkNameClass(); datasetName = (IDatasetName)InGeometricNetworkName; break; default: return(null); } // Set the name and workspace name of the new name object. datasetName.Name = datasetInput.Name; datasetName.WorkspaceName = workspaceName; // Cast the object to the IName interface and return it. IName name = (IName)datasetName; return(name); }
public static void CopyPasteGeodatabaseData(IWorkspace sourceWorkspace, IWorkspace targetWorkspace, string objectName, esriDatasetType esriDataType) { // Validate input if ((sourceWorkspace.Type == esriWorkspaceType.esriFileSystemWorkspace) || (targetWorkspace.Type == esriWorkspaceType.esriFileSystemWorkspace)) { return; // Should be a throw } //create source workspace name IDataset sourceWorkspaceDataset = (IDataset)sourceWorkspace; IWorkspaceName sourceWorkspaceName = (IWorkspaceName)sourceWorkspaceDataset.FullName; //create target workspace name IDataset targetWorkspaceDataset = (IDataset)targetWorkspace; IWorkspaceName targetWorkspaceName = (IWorkspaceName)targetWorkspaceDataset.FullName; //Create Name Object Based on data type IDatasetName datasetName; switch (esriDataType) { case esriDatasetType.esriDTFeatureDataset: IFeatureDatasetName inFeatureDatasetName = new FeatureDatasetNameClass(); datasetName = (IDatasetName)inFeatureDatasetName; inFeatureDatasetName = null; break; case esriDatasetType.esriDTFeatureClass: IFeatureClassName inFeatureClassName = new FeatureClassNameClass(); datasetName = (IDatasetName)inFeatureClassName; inFeatureClassName = null; break; case esriDatasetType.esriDTTable: ITableName inTableName = new TableNameClass(); datasetName = (IDatasetName)inTableName; inTableName = null; break; case esriDatasetType.esriDTGeometricNetwork: IGeometricNetworkName inGeometricNetworkName = new GeometricNetworkNameClass(); datasetName = (IDatasetName)inGeometricNetworkName; inGeometricNetworkName = null; break; case esriDatasetType.esriDTRelationshipClass: IRelationshipClassName inRelationshipClassName = new RelationshipClassNameClass(); datasetName = (IDatasetName)inRelationshipClassName; inRelationshipClassName = null; break; case esriDatasetType.esriDTNetworkDataset: INetworkDatasetName inNetworkDatasetName = new NetworkDatasetNameClass(); datasetName = (IDatasetName)inNetworkDatasetName; inNetworkDatasetName = null; break; case esriDatasetType.esriDTTopology: ITopologyName inTopologyName = new TopologyNameClass(); datasetName = (IDatasetName)inTopologyName; inTopologyName = null; break; default: return; // Should be a throw } // Set the name of the object to be copied datasetName.WorkspaceName = (IWorkspaceName)sourceWorkspaceName; datasetName.Name = objectName; //Setup mapping for copy/paste IEnumNameMapping fromNameMapping; ESRI.ArcGIS.esriSystem.IEnumNameEdit editFromName; ESRI.ArcGIS.esriSystem.IEnumName fromName = new NamesEnumerator(); editFromName = (ESRI.ArcGIS.esriSystem.IEnumNameEdit)fromName; editFromName.Add((ESRI.ArcGIS.esriSystem.IName)datasetName); ESRI.ArcGIS.esriSystem.IName toName = (ESRI.ArcGIS.esriSystem.IName)targetWorkspaceName; // Generate name mapping ESRI.ArcGIS.Geodatabase.IGeoDBDataTransfer geoDBDataTransfer = new GeoDBDataTransferClass(); bool targetWorkspaceExists; targetWorkspaceExists = geoDBDataTransfer.GenerateNameMapping(fromName, toName, out fromNameMapping); // Copy/Pate the data geoDBDataTransfer.Transfer(fromNameMapping, toName); System.Runtime.InteropServices.Marshal.ReleaseComObject(geoDBDataTransfer); System.Runtime.InteropServices.Marshal.ReleaseComObject(datasetName); System.Runtime.InteropServices.Marshal.ReleaseComObject(fromName); System.Runtime.InteropServices.Marshal.ReleaseComObject(editFromName); System.Runtime.InteropServices.Marshal.ReleaseComObject(fromNameMapping); geoDBDataTransfer = null; datasetName = null; editFromName = null; fromName = null; sourceWorkspaceDataset = null; sourceWorkspaceName = null; targetWorkspaceDataset = null; targetWorkspaceName = null; toName = null; fromNameMapping = null; }
private void axMapControl1_OnOleDrop(object sender, IMapControlEvents2_OnOleDropEvent e) { IDataObjectHelper dataObjectHelper = (IDataObjectHelper)e.dataObjectHelper; esriControlsDropAction dropAction = e.dropAction; e.effect = 0; switch (dropAction) { case esriControlsDropAction.esriDropEnter: if (dataObjectHelper.CanGetFiles() | dataObjectHelper.CanGetNames()) { this.m_Effect = esriControlsDragDropEffect.esriDragDropCopy; } else if (dataObjectHelper.InternalObject is IDataObject) { this.m_Effect = esriControlsDragDropEffect.esriDragDropCopy; } break; case esriControlsDropAction.esriDropOver: e.effect = (int)this.m_Effect; break; } if (dropAction == esriControlsDropAction.esriDropped) { int num; if (dataObjectHelper.CanGetFiles()) { System.Array files = System.Array.CreateInstance(typeof(string), 0, 0); files = (System.Array)dataObjectHelper.GetFiles(); for (num = 0; num <= (files.Length - 1); num++) { if (this.axMapControl1.CheckMxFile(files.GetValue(num).ToString())) { try { this.axMapControl1.LoadMxFile(files.GetValue(num).ToString(), System.Type.Missing, ""); } catch (Exception exception) { MessageBox.Show("Error:" + exception.Message); return; } } else { IFileName name = new FileNameClass { Path = files.GetValue(num).ToString() }; this.CreateLayer((IName)name); } } } else if (dataObjectHelper.CanGetNames()) { IEnumName names = dataObjectHelper.GetNames(); names.Reset(); for (IName name3 = names.Next(); name3 != null; name3 = names.Next()) { this.CreateLayer(name3); } } if (dataObjectHelper.InternalObject is IDataObject) { IList data = (dataObjectHelper.InternalObject as IDataObject).GetData("System.Collections.ArrayList") as IList; for (num = 0; num < data.Count; num++) { IWorkspaceName workspaceName; IWorkspaceName name6; object obj3 = data[num]; if (obj3 is IFeatureDatasetName) { IFeatureDatasetName name4 = new FeatureDatasetNameClass(); workspaceName = (obj3 as IDatasetName).WorkspaceName; name6 = new WorkspaceNameClass { WorkspaceFactoryProgID = workspaceName.WorkspaceFactoryProgID }; if (workspaceName.ConnectionProperties != null) { name6.ConnectionProperties = workspaceName.ConnectionProperties; } else { name6.PathName = workspaceName.PathName; } (name4 as IDatasetName).WorkspaceName = name6; (name4 as IDatasetName).Name = (obj3 as IDatasetName).Name; this.CreateLayer(name4 as IName); } else if (obj3 is IRasterDatasetName) { IRasterDatasetName name7 = new RasterDatasetNameClass(); workspaceName = (obj3 as IDatasetName).WorkspaceName; name6 = new WorkspaceNameClass { WorkspaceFactoryProgID = workspaceName.WorkspaceFactoryProgID }; if (workspaceName.ConnectionProperties != null) { name6.ConnectionProperties = workspaceName.ConnectionProperties; } else { name6.PathName = workspaceName.PathName; } (name7 as IDatasetName).WorkspaceName = name6; (name7 as IDatasetName).Name = (obj3 as IDatasetName).Name; this.CreateLayer(name7 as IName); } else if (obj3 is IDatasetName) { IDatasetName name8 = null; if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTTin) { name8 = new TinNameClass(); } if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTFeatureClass) { name8 = new FeatureClassNameClass(); (name8 as IFeatureClassName).FeatureDatasetName = (obj3 as IFeatureClassName).FeatureDatasetName; } else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTTopology) { name8 = new TopologyNameClass(); (name8 as ITopologyName).FeatureDatasetName = (obj3 as ITopologyName).FeatureDatasetName; } else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTRasterBand) { name8 = new RasterBandNameClass(); (name8 as IRasterBandName).RasterDatasetName = (obj3 as IRasterBandName).RasterDatasetName; } else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTGeometricNetwork) { name8 = new GeometricNetworkNameClass(); (name8 as IGeometricNetworkName).FeatureDatasetName = (obj3 as IGeometricNetworkName).FeatureDatasetName; } else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTRasterCatalog) { name8 = new RasterCatalogNameClass(); (name8 as IFeatureClassName).FeatureDatasetName = (obj3 as IFeatureClassName).FeatureDatasetName; } else if ((obj3 as IDatasetName).Type == esriDatasetType.esriDTNetworkDataset) { name8 = new NetworkDatasetNameClass(); (name8 as INetworkDatasetName).FeatureDatasetName = (obj3 as INetworkDatasetName).FeatureDatasetName; } if (name8 != null) { if (name8.WorkspaceName == null) { workspaceName = (obj3 as IDatasetName).WorkspaceName; name6 = new WorkspaceNameClass { WorkspaceFactoryProgID = workspaceName.WorkspaceFactoryProgID }; if (workspaceName.ConnectionProperties != null) { name6.ConnectionProperties = workspaceName.ConnectionProperties; } else { name6.PathName = workspaceName.PathName; } name8.WorkspaceName = name6; } name8.Name = (obj3 as IDatasetName).Name; this.CreateLayer(name8 as IName); } } else if (obj3 is IWorkspaceName) { workspaceName = obj3 as IWorkspaceName; name6 = new WorkspaceNameClass { WorkspaceFactoryProgID = workspaceName.WorkspaceFactoryProgID }; if (workspaceName.ConnectionProperties != null) { name6.ConnectionProperties = workspaceName.ConnectionProperties; } else { name6.PathName = workspaceName.PathName; } this.CreateLayer(name6 as IName); } else if (obj3 is IPropertySet) { IPropertySet set = obj3 as IPropertySet; ILayer property = set.GetProperty("Layer") as ILayer; this.axMapControl1.AddLayer(property, 0); } } } } }