/// <summary> /// Creates SHPfile. /// </summary> /// <param name="sFilePath">The file path.</param> /// <param name="geometry">The geometry.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public static bool CreateShpFile(string sFilePath, IGeometry geometry) { string directoryName = System.IO.Path.GetDirectoryName(sFilePath); IFeatureWorkspace featureWorkspace = EngineAPI.OpenWorkspace(directoryName, DataType.shp) as IFeatureWorkspace; bool result; if (featureWorkspace == null) { result = false; } else { try { string fileNameWithoutExtension = System.IO.Path.GetFileNameWithoutExtension(sFilePath); result = EngineAPI.CreateGeometryLayer(fileNameWithoutExtension, geometry, featureWorkspace, ""); } finally { if (featureWorkspace != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(featureWorkspace); } } } return(result); }
/// <summary> /// 打开矢量文件 /// </summary> /// <param name="shpFile">文件名</param> /// <returns></returns> public static IFeatureClass OpenFeatureClass(string shpFile) { IFeatureClass result; FileInfo fInfo = new FileInfo(shpFile); if (!System.IO.Directory.Exists(fInfo.DirectoryName)) { result = null; } else { IWorkspace workspace = EngineAPI.OpenWorkspace(fInfo.DirectoryName, DataType.shp); if (workspace == null) { result = null; } else { IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureClass); try { enumDatasetName.Reset(); IDatasetName datasetName; while ((datasetName = enumDatasetName.Next()) != null) { if (fInfo.Name == (datasetName.Name + ".shp")) { break; } } if (datasetName == null) { result = null; } else { IFeatureClass pFeatureClass = (datasetName as IName).Open() as IFeatureClass; result = pFeatureClass; } } finally { if (enumDatasetName != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(enumDatasetName); } if (workspace != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(workspace); } } } } return(result); }
/// <summary> /// Opens the raster file. /// </summary> /// <param name="sPath">The s path.</param> /// <param name="sName">Name of the s.</param> /// <returns>IRasterDataset.</returns> public static IRasterDataset OpenRasterFile(string sPath, string sName) { IRasterDataset result; if (!System.IO.Directory.Exists(sPath)) { result = null; } else { IWorkspace workspace = EngineAPI.OpenWorkspace(sPath, DataType.raster); if (workspace == null) { result = null; } else { IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTRasterDataset); try { enumDatasetName.Reset(); IDatasetName datasetName; while ((datasetName = enumDatasetName.Next()) != null) { if (string.Equals(datasetName.Name, sName, System.StringComparison.OrdinalIgnoreCase)) { break; } } if (datasetName == null) { result = null; } else { IRasterDataset rasterDataset = (datasetName as IName).Open() as IRasterDataset; result = rasterDataset; } } finally { if (enumDatasetName != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(enumDatasetName); } if (workspace != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(workspace); } } } } return(result); }
/// <summary> /// Opens the GDB feature class. /// </summary> /// <param name="sFilePath">The s file path.</param> /// <param name="type">The type.</param> /// <param name="sFcName">Name of the s fc.</param> /// <returns>IFeatureClass.</returns> public static IFeatureClass OpenGDBFeatureClass(string sFilePath, DataType type, string sFcName) { IFeatureClass result; if (type == DataType.mdb && !System.IO.File.Exists(sFilePath)) { result = null; } else if (type == DataType.gdb && !System.IO.Directory.Exists(sFilePath)) { result = null; } else { IWorkspace workspace = EngineAPI.OpenWorkspace(sFilePath, type); if (workspace == null) { result = null; } else { try { result = (workspace as IFeatureWorkspace).OpenFeatureClass(sFcName); } catch { result = null; } finally { if (workspace != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(workspace); } } } } return(result); }
/// <summary> /// Opens the cad feature class. /// </summary> /// <param name="sCadFilePath">The s cad file path.</param> /// <param name="sFcName">Name of the s fc.</param> /// <returns>IFeatureClass.</returns> public static IFeatureClass OpenCADFeatureClass(string sCadFilePath, string sFcName) { IFeatureClass result; if (!System.IO.File.Exists(sCadFilePath)) { result = null; } else { IWorkspace workspace = EngineAPI.OpenWorkspace(System.IO.Path.GetDirectoryName(sCadFilePath), DataType.cad); if (workspace == null) { result = null; } else { string fileName = System.IO.Path.GetFileName(sCadFilePath); IEnumDatasetName enumDatasetName = workspace.get_DatasetNames(esriDatasetType.esriDTFeatureDataset); try { enumDatasetName.Reset(); IDatasetName datasetName = null; IDatasetName datasetName2; while ((datasetName2 = enumDatasetName.Next()) != null) { if (string.Equals(datasetName2.Name, fileName, System.StringComparison.OrdinalIgnoreCase)) { IEnumDatasetName subsetNames = datasetName2.SubsetNames; try { subsetNames.Reset(); while ((datasetName = subsetNames.Next()) != null) { if (string.Equals(datasetName.Name, sFcName, System.StringComparison.OrdinalIgnoreCase)) { break; } } } finally { if (subsetNames != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(subsetNames); } } break; } } if (datasetName == null) { result = null; } else { IFeatureClass featureClass = (datasetName as IName).Open() as IFeatureClass; result = featureClass; } } finally { if (enumDatasetName != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(enumDatasetName); } if (workspace != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(workspace); } } } } return(result); }