public IFeatureClass Intsect(IFeatureClass _pFtClass, IFeatureClass _pFtOverlay, string _FilePath, string _pFileName) { IFeatureClassName pOutPut = new FeatureClassNameClass(); pOutPut.ShapeType = _pFtClass.ShapeType; pOutPut.ShapeFieldName = _pFtClass.ShapeFieldName; pOutPut.FeatureType = esriFeatureType.esriFTSimple; IWorkspaceName pWsN = new WorkspaceNameClass(); pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"; pWsN.PathName = _FilePath; IDatasetName pDatasetName = pOutPut as IDatasetName; pDatasetName.Name = _pFileName; pDatasetName.WorkspaceName = pWsN; IBasicGeoprocessor pBasicGeo = new BasicGeoprocessorClass(); IFeatureClass pFeatureClass = pBasicGeo.Intersect(_pFtClass as ITable, false, _pFtOverlay as ITable, false, 0.1, pOutPut); return(pFeatureClass); }
/// <summary> /// 打开dbf表 /// </summary> /// <param name="pathName"></param> /// <param name="tableName"></param> /// <returns></returns> public ITable OpenDBFTable(string pathName, string tableName) { // Create the workspace name object. IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.PathName = pathName; if (pathName.Contains(".gdb")) { workspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory"; } else { workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.shapefileworkspacefactory"; } // Create the table name object. IDatasetName dataSetName = new TableNameClass(); dataSetName.Name = tableName; dataSetName.WorkspaceName = workspaceName; // Open the table. IName name = (IName)dataSetName; ITable table = (ITable)name.Open(); return(table); }
/// <summary> /// 相交分析,返回相交部分的要素(注意输入要素类和叠加要素类不能有空几何等问题) /// </summary> /// <param name="inClass">输入的要素类</param> /// <param name="overlayClass">叠加的要素类</param> /// <param name="outPath">保存分析结果的工作空间路径</param> /// <param name="outName">保存分析结果的要素类名称</param> /// <returns></returns> public static IFeatureClass Intersect(this IFeatureClass inClass, IFeatureClass overlayClass, string outPath, string outName) { var workspaceType = WorkspaceEx.GetDefaultWorkspaceType(outPath); if (workspaceType == EWorkspaceType.Default) { throw new Exception($"工作空间路径(outPath)不存在!{outPath} 该路径必须是已存在的mdb文件路径,或shp所在文件夹路径,或gdb文件夹路径,或sde连接字符串"); } IFeatureClassName outClassName = new FeatureClassNameClass { ShapeType = inClass.ShapeType, ShapeFieldName = inClass.ShapeFieldName, FeatureType = esriFeatureType.esriFTSimple }; IWorkspaceName workspaceName = new WorkspaceNameClass { WorkspaceFactoryProgID = workspaceType.GetDescription(1), PathName = outPath }; IDatasetName datasetName = (IDatasetName)outClassName; datasetName.Name = outName; datasetName.WorkspaceName = workspaceName; return(new BasicGeoprocessorClass().Intersect((ITable)inClass, false, (ITable)overlayClass, false, 0.01, outClassName)); }
public void SaveShpToFile(IFeatureClass pFeatureClass, string ExportFilePath, string ExportFileShortName) { //设置导出要素类的参数 IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass(); IDataset pOutDataset = (IDataset)pFeatureClass; pOutFeatureClassName = (IFeatureClassName)pOutDataset.FullName; //创建一个输出shp文件的工作空间 IWorkspaceFactory pShpWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IWorkspaceName pInWorkspaceName = new WorkspaceNameClass(); pInWorkspaceName = pShpWorkspaceFactory.Create(ExportFilePath, ExportFileShortName, null, 0); //创建一个要素类 IFeatureClassName pInFeatureClassName = new FeatureClassNameClass(); IDatasetName pInDatasetClassName; pInDatasetClassName = (IDatasetName)pInFeatureClassName; pInDatasetClassName.Name = ExportFileShortName;//作为输出参数 pInDatasetClassName.WorkspaceName = pInWorkspaceName; IFeatureDataConverter pShpToClsConverter = new FeatureDataConverterClass(); pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, null, pInFeatureClassName, null, null, "", 1000, 0); MessageBox.Show("导出成功", "系统提示"); }
private void method_2() { if ((this.igxObject_0 != null) && (this.igxObject_0 is IGxObjectContainer)) { IEnumGxObject children = (this.igxObject_0 as IGxObjectContainer).Children; children.Reset(); for (IGxObject obj3 = children.Next(); obj3 != null; obj3 = children.Next()) { this.iarray_0.Add(obj3.InternalObjectName); this.listView1.Items.Add(obj3.FullName); } } if (this.igxObject_1 != null) { if (this.igxObject_1 is IGxDatabase) { this.txtOutLocation.Text = this.igxObject_1.FullName; this.iname_1 = this.igxObject_1.InternalObjectName; } else if (this.igxObject_1 is IGxDataset) { this.txtOutLocation.Text = this.igxObject_1.FullName; this.iname_1 = this.igxObject_1.InternalObjectName; } else if (this.igxObject_1 is IGxFolder) { IWorkspaceName name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory", PathName = (this.igxObject_1.InternalObjectName as IFileName).Path }; this.iname_1 = name as IName; } } }
private void method_1() { if (this.igxObject_0 != null) { this.textEditInputFeatures.Text = this.igxObject_0.FullName; this.iname_0 = this.igxObject_0.InternalObjectName; } else if (this.igxObject_1 != null) { if (this.igxObject_1 is IGxDatabase) { this.txtOutLocation.Text = this.igxObject_1.FullName; this.iname_1 = this.igxObject_1.InternalObjectName; } else if (this.igxObject_1 is IGxDataset) { this.txtOutLocation.Text = this.igxObject_1.FullName; this.iname_1 = this.igxObject_1.InternalObjectName; } else if (this.igxObject_1 is IGxFolder) { IWorkspaceName name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory", PathName = (this.igxObject_1.InternalObjectName as IFileName).Path }; this.iname_1 = name as IName; } } }
private bool method_6(IDatasetName idatasetName_0, bool bool_2) { try { IDataset dataset = (idatasetName_0 as IName).Open() as IDataset; if (dataset != null) { IWorkspaceName name = new WorkspaceNameClass { PathName = this.string_0, WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory" }; IWorkspace copyWorkspace = (name as IName).Open() as IWorkspace; dataset.Copy(idatasetName_0.Name, copyWorkspace); this.method_0( (this.string_0 + @"\" + System.IO.Path.GetFileNameWithoutExtension(idatasetName_0.Name)) + System.IO.Path.GetExtension(idatasetName_0.Name), true); return(true); } } catch (Exception exception) { MessageBox.Show(exception.Message); } return(false); }
private void frmEditGDBConnection_Load(object sender, EventArgs e) { if (this.string_2 != null) { IWorkspaceName name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory", PathName = this.string_2 }; IPropertySet connectionProperties = name.ConnectionProperties; try { this.txtServer.Text = connectionProperties.GetProperty("SERVER") as string; } catch { } try { this.txtInstance.Text = connectionProperties.GetProperty("INSTANCE") as string; } catch { } try { this.txtDatabase.Text = connectionProperties.GetProperty("DATABASE") as string; } catch { } this.chkSaveUserandPsw.EditValue = false; try { this.txtUser.Text = connectionProperties.GetProperty("USER") as string; if (this.txtUser.Text.Length > 0) { this.chkSaveUserandPsw.EditValue = true; } } catch { } try { this.txtPassword.Text = connectionProperties.GetProperty("PASSWORD") as string; } catch { } try { this.string_1 = connectionProperties.GetProperty("VERSION") as string; this.lblVersion.Text = this.string_1; } catch { } } }
/// <summary> /// 求交,暂时未用 /// </summary> /// <param name="_pFtClass"></param> /// <param name="_pFtOverlay"></param> /// <param name="_FilePath"></param> /// <param name="_pFileName"></param> /// <returns></returns> public IFeatureClass Intsect(IFeatureClass _pFtClass, IFeatureClass _pFtOverlay, string _FilePath, string _pFileName) { //设置输出 IFeatureClassName pOutPut = new FeatureClassNameClass(); pOutPut.ShapeType = _pFtClass.ShapeType; pOutPut.ShapeFieldName = _pFtClass.ShapeFieldName; pOutPut.FeatureType = esriFeatureType.esriFTSimple; //set output location and feature class name IWorkspaceName pWsN = new WorkspaceNameClass(); pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"; pWsN.PathName = _FilePath; //也可以用这种方法,IName 和IDataset的用法 // IWorkspaceFactory pWsFc = new ShapefileWorkspaceFactoryClass(); // IWorkspace pWs = pWsFc.OpenFromFile(_FilePath,0); // IDataset pDataset = pWs as IDataset; // IWorkspaceName pWsN = pDataset.FullName as IWorkspaceName; IDatasetName pDatasetName = pOutPut as IDatasetName; pDatasetName.Name = _pFileName; pDatasetName.WorkspaceName = pWsN; IBasicGeoprocessor pBasicGeo = new BasicGeoprocessorClass(); IFeatureClass pFeatureClass = pBasicGeo.Intersect(_pFtClass as ITable, false, _pFtOverlay as ITable, false, 0.1, pOutPut); return(pFeatureClass); }
private void btnSelectOutLocation_Click(object sender, EventArgs e) { frmOpenFile file = new frmOpenFile { Text = "保存位置" }; file.RemoveAllFilters(); file.AddFilter(new MyGxFilterWorkspaces(), true); if (file.DoModalSaveLocation() == DialogResult.OK) { IArray items = file.Items; if (items.Count != 0) { this.igxObject_0 = items.get_Element(0) as IGxObject; this.iname_0 = this.igxObject_0.InternalObjectName; if (this.igxObject_0 is IGxDatabase) { this.iname_0 = this.igxObject_0.InternalObjectName; } else if (this.igxObject_0 is IGxFolder) { IWorkspaceName name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory", PathName = (this.igxObject_0.InternalObjectName as IFileName).Path }; this.iname_0 = name as IName; } this.txtOutLocation.Text = this.igxObject_0.FullName; } } }
private void btnSelectWorkspace_Click(object sender, EventArgs e) { frmOpenFile file = new frmOpenFile { Text = "选择工作空间" }; file.RemoveAllFilters(); file.AddFilter(new MyGxFilterWorkspaces(), true); if (file.DoModalOpen() == DialogResult.OK) { IArray items = file.Items; if (items.Count != 0) { IGxObject obj2 = items.get_Element(0) as IGxObject; if (obj2 is IGxDatabase) { this.iworkspace_0 = (obj2 as IGxDatabase).Workspace; } else if (obj2 is IGxFolder) { IWorkspaceName name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory", PathName = (obj2.InternalObjectName as IFileName).Path }; this.iworkspace_0 = (name as IName).Open() as IWorkspace; } this.txtWorkspaceName.Text = this.iworkspace_0.PathName; this.txtWorkspaceName.Tag = this.iworkspace_0; } } }
/// <summary> /// 通过路径获取工作空间 /// </summary> /// <param name="eType">要打开的工作空间类别</param> /// <param name="path">文件或文件夹路径</param> /// <returns></returns> public static IWorkspace GetWorkspaceFromFile(string path, EWorkspaceType eType) { try { IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = eType.GetDescription(1); workspaceName.PathName = path; IName iName = (IName)workspaceName; IWorkspace workspace = iName.Open() as IWorkspace; Marshal.ReleaseComObject(iName); Marshal.ReleaseComObject(workspaceName); return(workspace); } catch (Exception ex) { var msg = ex.Message; //判断路径长度是否符合要求(Windows默认的字符的长度限制为260,一个中文字符长度为2)(路径超长不一定出错,mdb数据会出错,shp数据不一定出错) if (!FileOpt.PathLengthValidate(path, out var length)) { msg += $"\r\n 可能原因为:路径长度超出限制,无法识别“{path}”的数据,请修改数据存放路径\r\n(允许路径最大长度为260,该路径长度为{length})\r\n"; } throw new Exception($"打开{eType.GetDescription(2)}工作空间“{path}”出错:{msg}"); } }
public static IWorkspace GetWorkspace(Hashtable pPropList, string progID) { try { IPropertySet2 propertySets = new PropertySetClass(); foreach (string paraName in pPropList.Keys) propertySets.SetProperty(paraName.ToUpper(), pPropList[paraName]); IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass(); return wsf.Open(propertySets, 0); return (new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass()).Open(propertySets, 0); IWorkspaceName2 workspaceName = new WorkspaceNameClass(); workspaceName.ConnectionProperties = propertySets; // 类型库需要动态设置 workspaceName.WorkspaceFactoryProgID = progID; IName pName = workspaceName as IName; IWorkspace workspace = pName.Open() as IWorkspace; //IWorkspace workspace = pName.Open() as IWorkspace; return workspace; } catch (Exception ex) { MessageBox.Show("SDE连接参数不正确,请和系统管理员联系!"); return null; } }
private void method_1(string string_1) { IGxObject obj2 = new GxCadDataset(); IGxObject obj3 = new GxCadDrawing(); IDatasetName name2 = new CadDrawingNameClass(); IWorkspaceName name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory", PathName = System.IO.Path.GetDirectoryName(string_1) }; name2.Name = System.IO.Path.GetFileName(string_1); name2.WorkspaceName = name; (obj2 as IGxDataset).DatasetName = name2; name2 = new CadDrawingNameClass(); name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory", PathName = System.IO.Path.GetDirectoryName(string_1) }; name2.Name = System.IO.Path.GetFileName(string_1); name2.WorkspaceName = name; (obj3 as IGxDataset).DatasetName = name2; obj2.Attach(this, this.igxCatalog_0); obj3.Attach(this, this.igxCatalog_0); }
private void btnSelectInputFeatures_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog { Filter = "DWG文件(*.dwg)|*.dwg|DXF文件(*.dxf)|*.dxf", Multiselect = true }; if (dialog.ShowDialog() == DialogResult.OK) { for (int i = 0; i < dialog.FileNames.Length; i++) { IDatasetName unk = new CadDrawingNameClass(); IWorkspaceName name2 = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory", PathName = Path.GetDirectoryName(dialog.FileNames[i]) }; unk.Name = Path.GetFileName(dialog.FileNames[i]); unk.WorkspaceName = name2; this.listView1.Items.Add(dialog.FileNames[i]); this.iarray_0.Add(unk); } } }
public static IWorkspace GetWorkspace(Hashtable pPropList, string progID) { try { IPropertySet2 propertySets = new PropertySetClass(); foreach (string paraName in pPropList.Keys) { propertySets.SetProperty(paraName.ToUpper(), pPropList[paraName]); } IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass(); return(wsf.Open(propertySets, 0)); return((new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass()).Open(propertySets, 0)); IWorkspaceName2 workspaceName = new WorkspaceNameClass(); workspaceName.ConnectionProperties = propertySets; // 类型库需要动态设置 workspaceName.WorkspaceFactoryProgID = progID; IName pName = workspaceName as IName; IWorkspace workspace = pName.Open() as IWorkspace; //IWorkspace workspace = pName.Open() as IWorkspace; return(workspace); } catch (Exception ex) { MessageBox.Show("SDE连接参数不正确,请和系统管理员联系!"); return(null); } }
//"esriDataSourcesGDB.FileGDBWorkspaceFactory" //"esriDataSourcesFile.ShapefileWorkspaceFactory" //"esriDataSourcesGDB.SdeWorkspaceFactory" private IWorkspaceName getWorkspaceName(string WorkspaceFactoryProgID, string PathName) { IWorkspaceName workspaceName = new WorkspaceNameClass { WorkspaceFactoryProgID = WorkspaceFactoryProgID, PathName = PathName }; return(workspaceName); }
/// <summary> /// /// </summary> /// <param name="filepath">文件路径或文件夹路径</param> /// <param name="type"> /// esriDataSourcesGDB.AccessWorkspaceFactory //• esriDataSourcesFile.ArcInfoWorkspaceFactory //• esriDataSourcesFile.CadWorkspaceFactory //• esriDataSourcesGDB.FileGDBWorkspaceFactory //• esriDataSourcesOleDB.OLEDBWorkspaceFactory //• esriDataSourcesFile.PCCoverageWorkspaceFactory //• esriDataSourcesRaster.RasterWorkspaceFactory //• esriDataSourcesGDB.SdeWorkspaceFactory //• esriDataSourcesFile.ShapefileWorkspaceFactory //• esriDataSourcesOleDB.TextFileWorkspaceFactory //• esriDataSourcesFile.TinWorkspaceFactory //• esriDataSourcesFile.VpfWorkspaceFactory /// </param> /// <returns></returns> public IWorkspace getWorkspace(string filepath, string type) { IWorkspaceName pWorkspaceName = new WorkspaceNameClass(); pWorkspaceName.WorkspaceFactoryProgID = type; pWorkspaceName.PathName = filepath; IName pName = pWorkspaceName as IName; IWorkspace pWorkspace = pName.Open() as IWorkspace; return(pWorkspace); }
/// <summary> /// Opens a shapefile workspace and set the Workspace property to the opened workspace. /// </summary> /// <param name="szShapeFilePath">A path to a directory containing shapefiles.</param> /// <returns>IWorkspace interface to opened workspace.</returns> internal static IWorkspace OpenShapeFileWorkspace(string szShapeFilePath) { IWorkspaceName pWSName = new WorkspaceNameClass(); pWSName.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"; pWSName.PathName = szShapeFilePath; IName pName = (IName)pWSName; return(pName.Open() as IWorkspace); }
private void btnSelectOut_Click(object sender, EventArgs e) { frmOpenFile file = new frmOpenFile { Text = "保存位置" }; file.RemoveAllFilters(); file.AddFilter(new MyGxFilterWorkspaces(), true); file.AddFilter(new MyGxFilterFeatureDatasets(), false); if (file.DoModalSaveLocation() == DialogResult.OK) { IArray items = file.Items; if (items.Count != 0) { this.igxObject_0 = items.get_Element(0) as IGxObject; this.iname_0 = this.igxObject_0.InternalObjectName; if (this.igxObject_0 is IGxDatabase) { this.iname_0 = this.igxObject_0.InternalObjectName; this.iworkspace_0 = this.iname_0.Open() as IWorkspace; this.btnSR.Enabled = true; } else if (this.igxObject_0 is IGxFolder) { IWorkspaceName name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory", PathName = (this.igxObject_0.InternalObjectName as IFileName).Path }; this.iname_0 = name as IName; this.iworkspace_0 = this.iname_0.Open() as IWorkspace; this.btnSR.Enabled = true; } else if (this.igxObject_0 is IGxDataset) { IDatasetName internalObjectName = this.igxObject_0.InternalObjectName as IDatasetName; if (internalObjectName.Type != esriDatasetType.esriDTFeatureDataset) { return; } this.iname_0 = internalObjectName as IName; this.btnSR.Enabled = false; IGeoDataset dataset = (internalObjectName as IName).Open() as IGeoDataset; this.iworkspace_0 = (dataset as IDataset).Workspace; this.ispatialReference_0 = dataset.SpatialReference; this.txtOutSR.Text = this.ispatialReference_0.Name; } this.txtOutFeat.Text = this.igxObject_0.FullName; } } }
public static IFeatureClassName GetFeatureClassName(IFeatureClass pfc) { IDataset pDS = pfc as IDataset; IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName = pDS.FullName as IWorkspaceName; IFeatureClassName featureClassName = new FeatureClassNameClass(); IDatasetName datasetName = (IDatasetName)featureClassName; datasetName.Name = pDS.Name; datasetName.WorkspaceName = workspaceName; return featureClassName; }
private static IWorkspace GetWorkspace(string progId, string path, string connection) { // Create a name object for the dataset. IWorkspaceName2 workspaceName = new WorkspaceNameClass { WorkspaceFactoryProgID = progId, PathName = path, //ConnectionString = connection }; IName workspaceIName = (IName)workspaceName; IWorkspace workspace = (IWorkspace)workspaceIName.Open(); return(workspace); }
/// <summary> /// Gets the workspace name reference for the PGDB file specified. /// </summary> /// <param name="pgdbFile">The PGDB file.</param> /// <returns>Workspace name reference</returns> public static IWorkspaceName GetPGDBWorkspaceName(string pgdbFile) { if (string.IsNullOrEmpty(pgdbFile)) { throw new ArgumentException("A valid PGDB file name [pgdbFile] is required."); } IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory"; workspaceName.PathName = pgdbFile; return(workspaceName); }
/// <summary> /// 通过连接字符串获取工作空间,连接字符串参考: /// <para>①sde: SERVER=ditu.test.com;INSTANCE=5151;DATABASE=sde_test;USER=sa;PASSWORD=sa;VERSION=dbo.DEFAULT</para> /// <para>②sql: server=localhost;uid=sa;pwd=sa;database=myDatabase</para> /// <para>③oleDb: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=x:\xxx.mdb;User Id=admin;Password=xxx;</para> /// </summary> /// <param name="eType">要打开的工作空间类别</param> /// <param name="connnectString">连接字符串</param> /// <returns></returns> public static IWorkspace GetWorksapceFromConnStr(string connnectString, EWorkspaceType eType) { try { IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = eType.GetDescription(1); workspaceName.ConnectionProperties = ConnectStringToPropetySet(connnectString); IName iName = (IName)workspaceName; return(iName.Open() as IWorkspace); } catch (Exception ex) { throw new Exception($"打开{eType.GetDescription(2)}工作空间“{connnectString}”出错:{ex.Message}"); } }
/// <summary> /// 通过路径获取工作空间 /// </summary> /// <param name="eType">要打开的工作空间类别</param> /// <param name="path">文件或文件夹路径</param> /// <returns></returns> public static IWorkspace GetWorkspaceFromFile(string path, EWorkspaceType eType) { try { IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = eType.GetDescription(1); workspaceName.PathName = path; IName iName = (IName)workspaceName; return(iName.Open() as IWorkspace); } catch (Exception ex) { throw new Exception($"打开{eType.GetDescription(2)}工作空间“{path}”出错:{ex.Message}"); } }
/// <summary> /// 获取矢量对象 /// </summary> /// <param name="WorkspaceFactoryProgID"> /// /// esriDataSourcesGDB.AccessWorkspaceFactory /// esriDataSourcesFile.ArcInfoWorkspaceFactory /// esriDataSourcesFile.CadWorkspaceFactory /// esriDataSourcesGDB.FileGDBWorkspaceFactory /// esriDataSourcesOleDB.OLEDBWorkspaceFactory /// esriDataSourcesFile.PCCoverageWorkspaceFactory /// esriDataSourcesRaster.RasterWorkspaceFactory /// esriDataSourcesGDB.SdeWorkspaceFactory /// esriDataSourcesFile.ShapefileWorkspaceFactory /// esriDataSourcesOleDB.TextFileWorkspaceFactory /// esriDataSourcesFile.TinWorkspaceFactory /// esriDataSourcesFile.VpfWorkspaceFactory /// /// </param> /// <param name="GDBPath"></param> /// <param name="featureClassName"></param> /// <returns></returns> private IFeatureClass getFeatureClass(string WorkspaceFactoryProgID, string path, string featureClassName) { IWorkspaceName workspaceName = new WorkspaceNameClass { WorkspaceFactoryProgID = WorkspaceFactoryProgID, PathName = path }; IName workspaceIName = (IName)workspaceName; IWorkspace workspace = (IWorkspace)workspaceIName.Open(); IFeatureClass featureClass = (workspace as IFeatureWorkspace).OpenFeatureClass(featureClassName); return(featureClass); }
public static IFeatureClassName GetFeatureClassName(IFeatureClass pfc) { IDataset pDS = pfc as IDataset; IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName = pDS.FullName as IWorkspaceName; IFeatureClassName featureClassName = new FeatureClassNameClass(); IDatasetName datasetName = (IDatasetName)featureClassName; datasetName.Name = pDS.Name; datasetName.WorkspaceName = workspaceName; return(featureClassName); }
public bool Do() { string path = this.txtOutGDB.Text.Trim(); if (path.Length == 0) { MessageBox.Show("请选择导出位置!"); return(false); } if (!(Path.GetExtension(path).ToLower() == ".mdb")) { MessageBox.Show("请选择正确的导出位置!"); return(false); } if (!File.Exists(path)) { IWorkspaceFactory factory = new AccessWorkspaceFactory(); try { IWorkspaceName name = factory.Create(Path.GetDirectoryName(path), Path.GetFileNameWithoutExtension(path), null, 0); this.txtOutGDB.Tag = name; goto Label_00EC; } catch (Exception exception) { MessageBox.Show(exception.ToString()); return(false); } } IWorkspaceName name2 = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory", PathName = path }; IWorkspace workspace = (name2 as IName).Open() as IWorkspace; if (!this.method_2(workspace, ExtractionDataHelper.m_pHelper.EnumName)) { return(false); } this.txtOutGDB.Tag = name2; Label_00EC: ExtractionDataHelper.m_pHelper.ReuseSchema = this.chkResueSchema.Checked; ExtractionDataHelper.m_pHelper.CheckOnlySchema = this.rdoType.SelectedIndex == 1; ExtractionDataHelper.m_pHelper.CheckoutWorkspaceName = this.txtOutGDB.Tag as IWorkspaceName; return(true); }
private void btnSelectOutLocation_Click(object sender, EventArgs e) { try { this.frmOpenFile_0.Text = "保存位置"; this.frmOpenFile_0.RemoveAllFilters(); this.frmOpenFile_0.AddFilter(new MyGxFilterWorkspaces(), true); this.frmOpenFile_0.AddFilter(new MyGxFilterFeatureDatasets(), false); if (this.frmOpenFile_0.DoModalSaveLocation() == DialogResult.OK) { IArray items = this.frmOpenFile_0.Items; if (items.Count != 0) { this.igxObject_1 = items.get_Element(0) as IGxObject; this.iname_1 = this.igxObject_1.InternalObjectName; if (this.igxObject_1 is IGxDatabase) { this.iname_1 = this.igxObject_1.InternalObjectName; } else if (this.igxObject_1 is IGxFolder) { IWorkspaceName name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory", PathName = (this.igxObject_1.InternalObjectName as IFileName).Path }; this.iname_1 = name as IName; } else if (this.igxObject_1 is IGxDataset) { IDatasetName internalObjectName = this.igxObject_1.InternalObjectName as IDatasetName; if (internalObjectName.Type == esriDatasetType.esriDTFeatureDataset) { this.iname_1 = internalObjectName as IName; } else { return; } } this.txtOutLocation.Text = this.igxObject_1.FullName; } } } catch (Exception) { } }
public static IWorkspaceName OpenVpfWorkspaceName(string VpfFilePath) { IWorkspaceName pWorkspaceName = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.VpfWorkspaceFactory" }; try { pWorkspaceName.PathName = VpfFilePath; } catch (Exception ex) { LOG.Error(ex); } return(pWorkspaceName); }
private void btnSelectInputFeatures_Click(object sender, EventArgs e) { frmOpenFile file = new frmOpenFile(); file.AddFilter(new MyGxFilterFeatureClasses(), true); if (file.DoModalSave() == DialogResult.OK) { IArray items = file.Items; if (items.Count != 0) { System.Windows.Forms.Cursor.Current = Cursors.WaitCursor; try { IWorkspaceName name = null; IGxObject obj2 = items.get_Element(0) as IGxObject; string str = ""; string fullName = ""; if (obj2 is IGxDatabase) { BufferHelper.m_BufferHelper.m_pOutFeatureWorksapce = (obj2 as IGxDatabase).Workspace as IFeatureWorkspace; fullName = obj2.FullName; } else if (obj2 is IGxFolder) { name = new WorkspaceNameClass { WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory", PathName = (obj2.InternalObjectName as IFileName).Path }; BufferHelper.m_BufferHelper.m_pOutFeatureWorksapce = (name as IName).Open() as IFeatureWorkspace; fullName = (obj2.InternalObjectName as IFileName).Path; str = ".shp"; } BufferHelper.m_BufferHelper.m_FeatClassName = file.SaveName; this.txtOutName.Text = fullName + @"\" + file.SaveName + str; } catch (Exception exception) { CErrorLog.writeErrorLog(null, exception, ""); } System.Windows.Forms.Cursor.Current = Cursors.Default; } } }
//通过IName获取到CadDrawingDataset private static ICadDrawingDataset GetCadDataset(string cadWorkspacePath, string cadFileName) { //Create a WorkspaceName object IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory"; workspaceName.PathName = cadWorkspacePath; //Create a CadDrawingName object IDatasetName cadDatasetName = new CadDrawingNameClass(); cadDatasetName.Name = cadFileName; cadDatasetName.WorkspaceName = workspaceName; //Open the CAD drawing ESRI.ArcGIS.esriSystem.IName name = (ESRI.ArcGIS.esriSystem.IName)cadDatasetName; return((ICadDrawingDataset)name.Open()); }
public static ITable LoadTable(string tblpath,string tblname) { ITable tbl = null; // Create workspace name object. IWorkspaceName wsName = new WorkspaceNameClass(); wsName.PathName = tblpath; wsName.WorkspaceFactoryProgID = "esriDataSourcesFile.shapefileworkspacefactory"; // Create dataset name object. IDatasetName dsetName = new TableNameClass(); dsetName.Name = tblname; dsetName.WorkspaceName = wsName; // Open the table IName name = dsetName as IName; tbl = name.Open() as ITable; return tbl; }
public static IFeatureClass LoadShapefile(string shapepath,string shapename) { IFeatureClass feacls=null; // Create workspace name object IWorkspaceName wsName=new WorkspaceNameClass(); wsName.PathName=shapepath; wsName.WorkspaceFactoryProgID="esriDataSourcesFile.shapefileworkspacefactory"; // Create dataset name object IDatasetName dsname=new FeatureClassNameClass(); dsname.Name=shapename; dsname.WorkspaceName = wsName; // Open shapfile IName name = dsname as IName; feacls = name.Open() as IFeatureClass; return feacls; }
public static void TranferBetweenGeodatabase(string featureClass, string targetPath, string sourcePath) { // Create new workspace name objects. IWorkspaceName sourceWorkspaceName = new WorkspaceNameClass(); IWorkspaceName targetWorkspaceName = new WorkspaceNameClass(); IName targetName = (IName)targetWorkspaceName; // Set the workspace name properties. sourceWorkspaceName.PathName = @sourcePath;//"C:\arcgis\ArcTutor\BuildingaGeodatabase\Montgomery.gdb"; sourceWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory"; targetWorkspaceName.PathName = @targetPath;//"PartialMontgomery.gdb"; targetWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.FileGDBWorkspaceFactory"; // Create a name object for the source feature class. IFeatureClassName featureClassName = new FeatureClassNameClass(); // Set the featureClassName properties. IDatasetName sourceDatasetName = (IDatasetName)featureClassName; sourceDatasetName.WorkspaceName = sourceWorkspaceName; sourceDatasetName.Name = featureClass;//"Blocks"; IName sourceName = (IName)sourceDatasetName; // Create an enumerator for source datasets. IEnumName sourceEnumName = new NamesEnumeratorClass(); IEnumNameEdit sourceEnumNameEdit = (IEnumNameEdit)sourceEnumName; // Add the name object for the source class to the enumerator. sourceEnumNameEdit.Add(sourceName); // Create a GeoDBDataTransfer object and a null name mapping enumerator. IGeoDBDataTransfer geoDBDataTransfer = new GeoDBDataTransferClass(); IEnumNameMapping enumNameMapping = null; // Use the data transfer object to create a name mapping enumerator. Boolean conflictsFound = geoDBDataTransfer.GenerateNameMapping(sourceEnumName, targetName, out enumNameMapping); enumNameMapping.Reset(); // Check for conflicts. if (conflictsFound) { // Iterate through each name mapping. INameMapping nameMapping = null; while ((nameMapping = enumNameMapping.Next()) != null) { // Resolve the mapping's conflict (if there is one). if (nameMapping.NameConflicts) { nameMapping.TargetName = nameMapping.GetSuggestedName(targetName); } // See if the mapping's children have conflicts. IEnumNameMapping childEnumNameMapping = nameMapping.Children; if (childEnumNameMapping != null) { childEnumNameMapping.Reset(); // Iterate through each child mapping. INameMapping childNameMapping = null; while ((childNameMapping = childEnumNameMapping.Next()) != null) { if (childNameMapping.NameConflicts) { childNameMapping.TargetName = childNameMapping.GetSuggestedName (targetName); } } } } } // Start the transfer. geoDBDataTransfer.Transfer(enumNameMapping, targetName); }
public IFeatureClass Intsect(IFeatureClass _pFtClass,IFeatureClass _pFtOverlay,string _FilePath,string _pFileName) { IFeatureClassName pOutPut = new FeatureClassNameClass(); pOutPut.ShapeType = _pFtClass.ShapeType; pOutPut.ShapeFieldName = _pFtClass.ShapeFieldName; pOutPut.FeatureType = esriFeatureType.esriFTSimple; //set output location and feature class name IWorkspaceName pWsN = new WorkspaceNameClass(); pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"; pWsN.PathName = _FilePath; //也可以用这种方法,IName 和IDataset的用法 /* IWorkspaceFactory pWsFc = new ShapefileWorkspaceFactoryClass(); IWorkspace pWs = pWsFc.OpenFromFile(_FilePath, 0); IDataset pDataset = pWs as IDataset; IWorkspaceName pWsN = pDataset.FullName as IWorkspaceName; */ IDatasetName pDatasetName = pOutPut as IDatasetName; pDatasetName.Name = _pFileName; pDatasetName.WorkspaceName =pWsN; IBasicGeoprocessor pBasicGeo = new BasicGeoprocessorClass(); IFeatureClass pFeatureClass = pBasicGeo.Intersect(_pFtClass as ITable , false, _pFtOverlay as ITable , false, 0.1, pOutPut); return pFeatureClass; }
public IWorkspace Get_Workspace(string _pWorkspacePath) { IWorkspaceName pWorkspaceName = new WorkspaceNameClass(); pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory"; pWorkspaceName.PathName = _pWorkspacePath; IName pName = pWorkspaceName as IName; IWorkspace pWorkspace = pName.Open() as IWorkspace; return pWorkspace; }
public void OutPut(AxMapControl pMapControl, String Path,String Name) { // set output featureclass name and shape type IFeatureClassName pOutName; pOutName = new FeatureClassNameClass(); pOutName.FeatureType = esriFeatureType.esriFTSimple; pOutName.ShapeFieldName = "Shape"; pOutName.ShapeType = this.pFeatureClass1.ShapeType; //set output location and feature class name IWorkspaceName pWsN; pWsN = new WorkspaceNameClass(); pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"; //IWorkspaceFactory pWFC;����Factoryʵ�֣�����Щ�����Ĺ�ϵ���е�ģ���� // pWFC = new WorkspaceFactoryClass(); // pWsN = pWFC.Create(Path, "Test", null, 0); // IFeatureWorkspace pShape; pWsN.PathName = Path; IDatasetName pDN; pDN = pOutName as IDatasetName; pDN.Name = Name; pDN.WorkspaceName = pWsN; //set tolerence double tol = 0.1; IBasicGeoprocessor pBGP; pBGP = new BasicGeoprocessorClass(); pBGP.SpatialReference = pMapControl.Map.SpatialReference; IFeatureClass pOutClass; pOutClass = pBGP.Intersect(this.pTable1, false, this.pTable2, false, tol, pOutName); // pOutClass = pBGP.Union(this.pTable1, false, this.pTable2, false, tol, pOutName); // pOutClass= pBGP.Clip(this.pTable1, false, this.pTable2, false, tol, pOutName); /* IArray pArry; pArry = new ArrayClass(); pArry.Add(pTable1); pArry.Add(this.pTable2); pOutClass = pBGP.Merge(pArry, this.pTable1, pOutName); */ //ITable pToutTable; // pToutTable = new TableClass(); //IField pField; // pField =pFeatureLayer1 .FeatureClass .Fields .get_Field (pFeatureClass1 .FindField ("name")); IFeatureLayer pOutLayer; pOutLayer = new FeatureLayerClass(); pOutLayer.FeatureClass = pOutClass; pOutLayer.Name = pOutClass.AliasName; pMapControl.AddLayer(pOutLayer); }
public IFeatureClass Intsect(IFeatureClass _pFtClass, IFeatureClass _pFtOverlay, string _FilePath, string _pFileName) { IFeatureClassName pOutPut = new FeatureClassNameClass(); pOutPut.ShapeType = _pFtClass.ShapeType; pOutPut.ShapeFieldName = _pFtClass.ShapeFieldName; pOutPut.FeatureType = esriFeatureType.esriFTSimple; IWorkspaceName pWsN = new WorkspaceNameClass(); pWsN.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"; pWsN.PathName = _FilePath; IDatasetName pDatasetName = pOutPut as IDatasetName; pDatasetName.Name = _pFileName; pDatasetName.WorkspaceName = pWsN; IBasicGeoprocessor pBasicGeo = new BasicGeoprocessorClass(); IFeatureClass pFeatureClass = pBasicGeo.Intersect(_pFtClass as ITable, false, _pFtOverlay as ITable, false, 0.1, pOutPut); return pFeatureClass; }
//internal void ExportFeatureClassToShp(ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatureClass, string strFullPath, string filePath) //{ // //throw new NotImplementedException(); public void ExportFeatureClassToShp(IFeatureClass apFeatureClass, string ExportShapeFileName, string ExportFilePath) { if (apFeatureClass == null) { MessageBox.Show("请选择", "系统提示"); return; } if (ExportShapeFileName == "") return; string ExportFileShortName = System.IO.Path.GetFileNameWithoutExtension(ExportShapeFileName); ExportFilePath = System.IO.Path.GetDirectoryName(ExportShapeFileName); shpPath = ExportFilePath + "\\" + ExportFileShortName + "\\" + ExportFileShortName + ".shp"; //设置导出要素类的参数 IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass(); IDataset pOutDataset = (IDataset)apFeatureClass; pOutFeatureClassName = (IFeatureClassName)pOutDataset.FullName; //创建一个输出shp文件的工作空间 IWorkspaceFactory pShpWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IWorkspaceName pInWorkspaceName = new WorkspaceNameClass(); pInWorkspaceName = pShpWorkspaceFactory.Create(ExportFilePath, ExportFileShortName, null, 0); //创建一个要素集合 IFeatureDatasetName pInFeatureDatasetName = null; //创建一个要素类 IFeatureClassName pInFeatureClassName = new FeatureClassNameClass(); IDatasetName pInDatasetClassName; pInDatasetClassName = (IDatasetName)pInFeatureClassName; pInDatasetClassName.Name = ExportFileShortName;//作为输出参数 pInDatasetClassName.WorkspaceName = pInWorkspaceName; //通过FIELDCHECKER检查字段的合法性,为输出SHP获得字段集合 long iCounter; IFields pOutFields, pInFields; IFieldChecker pFieldChecker; IField pGeoField; IEnumFieldError pEnumFieldError = null; pInFields = apFeatureClass.Fields; pFieldChecker = new FieldChecker(); pFieldChecker.Validate(pInFields, out pEnumFieldError, out pOutFields); //通过循环查找几何字段 pGeoField = null; for (iCounter = 0; iCounter < pOutFields.FieldCount; iCounter++) { if (pOutFields.get_Field((int)iCounter).Type == esriFieldType.esriFieldTypeGeometry) { pGeoField = pOutFields.get_Field((int)iCounter); break; } } //得到几何字段的几何定义 IGeometryDef pOutGeometryDef; IGeometryDefEdit pOutGeometryDefEdit; pOutGeometryDef = pGeoField.GeometryDef; //设置几何字段的空间参考和网格 pOutGeometryDefEdit = (IGeometryDefEdit)pOutGeometryDef; pOutGeometryDefEdit.GridCount_2 = 1; pOutGeometryDefEdit.set_GridSize(0, 1500000); try { //开始导入 IFeatureDataConverter pShpToClsConverter = new FeatureDataConverterClass(); //pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, pInFeatureDatasetName, pInFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0); pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, pInFeatureDatasetName, pInFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0); MessageBox.Show("导出成功", "系统提示"); } catch (Exception ex) { MessageBox.Show("the following exception occurred:" + ex.ToString()); } }
/// <summary> /// 要素类转Shape /// </summary> /// <param name="apFeatureClass"></param> private void ExportFeatureClassToConTempShp(IFeatureClass apFeatureClass) { if (Directory.Exists(System.Windows.Forms.Application.StartupPath + "\\Convert\\DWGConvert\\ConTempShp")) { Directory.Delete(System.Windows.Forms.Application.StartupPath + "\\Convert\\DWGConvert\\ConTempShp", true); } //设置导出要素类的参数 IFeatureClassName pOutFeatureClassName = new FeatureClassNameClass(); IDataset pOutDataset = (IDataset)apFeatureClass; pOutFeatureClassName = (IFeatureClassName)pOutDataset.FullName; //创建一个输出shp文件的工作空间 IWorkspaceFactory pShpWorkspaceFactory = new ShapefileWorkspaceFactoryClass(); IWorkspaceName pInWorkspaceName = new WorkspaceNameClass(); pInWorkspaceName = pShpWorkspaceFactory.Create(System.Windows.Forms.Application.StartupPath + "\\Convert\\DWGConvert", "ConTempShp", null, 0); //创建一个要素集合 IFeatureDatasetName pInFeatureDatasetName = null; //创建一个要素类 IFeatureClassName pInFeatureClassName = new FeatureClassNameClass(); IDatasetName pInDatasetClassName; pInDatasetClassName = (IDatasetName)pInFeatureClassName; pInDatasetClassName.Name = "ConTempShp";//作为输出参数 pInDatasetClassName.WorkspaceName = pInWorkspaceName; //通过FIELDCHECKER检查字段的合法性,为输出SHP获得字段集合 long iCounter; IFields pOutFields, pInFields; IFieldChecker pFieldChecker; IField pGeoField; IEnumFieldError pEnumFieldError = null; pInFields = apFeatureClass.Fields; pFieldChecker = new FieldChecker(); pFieldChecker.Validate(pInFields, out pEnumFieldError, out pOutFields); //通过循环查找几何字段 pGeoField = null; for (iCounter = 0; iCounter < pOutFields.FieldCount; iCounter++) { if (pOutFields.get_Field((int)iCounter).Type == esriFieldType.esriFieldTypeGeometry) { pGeoField = pOutFields.get_Field((int)iCounter); break; } } //得到几何字段的几何定义 IGeometryDef pOutGeometryDef; IGeometryDefEdit pOutGeometryDefEdit; pOutGeometryDef = pGeoField.GeometryDef; //设置几何字段的空间参考和网格 pOutGeometryDefEdit = (IGeometryDefEdit)pOutGeometryDef; pOutGeometryDefEdit.GridCount_2 = 1; pOutGeometryDefEdit.set_GridSize(0, 1500000); //try //{ IFeatureDataConverter pShpToClsConverter = new FeatureDataConverterClass(); pShpToClsConverter.ConvertFeatureClass(pOutFeatureClassName, null, pInFeatureDatasetName, pInFeatureClassName, pOutGeometryDef, pOutFields, "", 1000, 0); // MessageBox.Show("导出成功", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); //} //catch (Exception ex) //{ //} /*****20130227杨漾(去掉trycatch,上层trycatch(MainForm)处理)*****/ }
public static bool SwitchSource(IDataLayer2 pDataLayer, IPropertySet pSDEConnectionProps, string newDatasetName) { bool retVal = false; try { IDatasetName pDatasetName; IWorkspaceName pWorkspaceName = new WorkspaceNameClass(); pWorkspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.SdeWorkspaceFactory"; pWorkspaceName.ConnectionProperties = pSDEConnectionProps; pDatasetName = (IDatasetName)pDataLayer.DataSourceName; pDatasetName.WorkspaceName = pWorkspaceName; pDatasetName.Name = newDatasetName; //e.g. //ISDUT.TA_XXXX; pDataLayer.Disconnect(); pDataLayer.DataSourceName = (IName)pDatasetName; pDataLayer.Connect(null); retVal = true; } catch(Exception ex) { Debug.WriteLine(ex.Message + "\n" + ex.StackTrace); } return retVal; }
public void IWorkspace__get_WorkspaceName(string workspacePath, IWorkspace workspace) { //Creates a new workspace name for a personal geodatabase. IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = "esriDataSourcesGDB.AccessWorkspaceFactory"; workspaceName.PathName = workspacePath; //Or Get a workspace name from an existing workspace. IDataset dataset = (IDataset)workspace; //Workspaces implement IDataset workspaceName = (IWorkspaceName)dataset.FullName; }
//通过IName获取到CadDrawingDataset private static ICadDrawingDataset GetCadDataset(string cadWorkspacePath, string cadFileName) { //Create a WorkspaceName object IWorkspaceName workspaceName = new WorkspaceNameClass(); workspaceName.WorkspaceFactoryProgID = "esriDataSourcesFile.CadWorkspaceFactory"; workspaceName.PathName = cadWorkspacePath; //Create a CadDrawingName object IDatasetName cadDatasetName = new CadDrawingNameClass(); cadDatasetName.Name = cadFileName; cadDatasetName.WorkspaceName = workspaceName; //Open the CAD drawing IName name = (IName)cadDatasetName; return (ICadDrawingDataset)name.Open(); }