/// <summary> /// 根据文件获取图层 /// </summary> /// <param name="filePath">文件</param> /// <returns></returns> public static ILayer GetLayerByFile(string filePath) { if (Path.GetExtension(filePath) == ".shp") { return(FeatureInfoClass.GetFeatureLayer(filePath)); } return(RasterDataInfoClass.GetRasterLayer(filePath)); }
/// <summary> /// 数据集复制为临时图层 /// </summary> /// <param name="inFile"></param> /// <returns></returns> public static ILayer CopyAsTempLayer(string inFile) { bool isFeatureFile = FeatureInfoClass.IsFeatureFile(inFile); string outFile = isFeatureFile ? TempFile.CreateNewTempFile(temExtension: "shp") : TempFile.CreateNewTempFile(); return(CopyAsLayer(inFile, outFile)); }
/// <summary> /// 获取属性表 /// </summary> /// <returns></returns> public static DataTable GetAttributeTable(ComboBox cboInVector, List <string> mapFeatureFilePath) { string vectorFile = LayerInfoClass.GetFilePathFromList(cboInVector.Text, mapFeatureFilePath); if (string.IsNullOrEmpty(vectorFile)) { return(null); } IFeatureLayer featureLayer = FeatureInfoClass.GetFeatureLayer(vectorFile); return(GetAttributeTable(featureLayer)); }
/// <summary> /// 获取图层指定字段名称的属性表 /// </summary> /// <param name="layer">图层</param> /// <param name="queryFilter2">查询条件</param> /// <param name="rowCount">显示的行数</param> /// <param name="inFieldName">指定字段名称</param> /// <returns>属性表</returns> public static DataTable GetAttributeTable(ILayer layer, Dictionary <string, int> inFieldName, IQueryFilter2 queryFilter2 = null, int rowCount = 0) { HashSet <string> fieldNames = new HashSet <string>(); foreach (var key in inFieldName.Keys) { fieldNames.Add(key); } return(GetAttributeTableByITable(GetITableByLayer(layer), fieldNames, FeatureInfoClass.GetShapeType(layer), queryFilter2, rowCount)); }
/// <summary> /// 数据集复制为矢量图层 /// </summary> /// <param name="dataset">数据集</param> /// <param name="outFile">输出文件</param> /// <returns></returns> public static ILayer CopyDatasetAsFeatureLayer(IDataset dataset, string outFile) { //数据为空或文件已存在,则返回null if (IsCannotCopy(dataset, outFile)) { return(null); } string fileName = Path.GetFileNameWithoutExtension(outFile); IWorkspace workSpace = FeatureInfoClass.GetShapefileWorkspace(outFile); dataset.Copy(fileName, workSpace); return(FeatureInfoClass.GetFeatureLayer(outFile)); }
/// <summary> /// 转换图层坐标系 /// </summary> /// <param name="inFilePath">图层</param> /// <param name="spatialReference">坐标系</param> /// <param name="outFile">输出文件</param> public static void ChangeLayerCoordinateSystem(string inFilePath, ISpatialReference spatialReference, string outFile) { if (spatialReference == null) { return; } if (FeatureInfoClass.IsFeatureFile(inFilePath)) { ChangeFeatureCoordinateSystem(inFilePath, spatialReference, outFile); } else { ChangeRasterCoordinateSystem(inFilePath, spatialReference, outFile); } }
/// <summary> /// 数据集复制为图层 /// </summary> /// <param name="inFile"></param> /// <param name="outFile">输出文件</param> /// <returns></returns> public static ILayer CopyAsLayer(string inFile, string outFile) { IDataset dataset = GetDataset(inFile); //数据不能复制 if (IsCannotCopy(dataset, outFile)) { return(null); } //从数据集中复制图层 ILayer layer = FeatureInfoClass.IsFeatureFile(inFile) ? CopyDatasetAsFeatureLayer(dataset, outFile) : CopyDatasetAsRasterLayer(dataset, outFile); return(layer); }
/// <summary> /// 获取图层指定字段名称的属性表 /// </summary> /// <param name="layer">图层</param> /// <param name="queryFilter2">查询条件</param> /// <param name="rowCount">显示的行数</param> /// <param name="inFieldName">指定字段名称</param> /// <returns>属性表</returns> public static DataTable GetAttributeTable(ILayer layer, HashSet <string> inFieldName, IQueryFilter2 queryFilter2 = null, int rowCount = 0) { return(GetAttributeTableByITable(GetITableByLayer(layer), inFieldName, FeatureInfoClass.GetShapeType(layer), queryFilter2, rowCount)); }
/// <summary> /// 获取数据集 /// </summary> /// <param name="inFile"></param> public static IDataset GetDataset(string inFile) { return(FeatureInfoClass.IsFeatureFile(inFile) ? FeatureInfoClass.GetDataset(inFile) : RasterDataInfoClass.GetDataset(inFile)); }