Example #1
0
 /// <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));
 }
Example #2
0
        /// <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));
        }
Example #5
0
        /// <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));
        }
Example #6
0
        /// <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);
            }
        }
Example #7
0
        /// <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));
 }
Example #9
0
 /// <summary>
 /// 获取数据集
 /// </summary>
 /// <param name="inFile"></param>
 public static IDataset GetDataset(string inFile)
 {
     return(FeatureInfoClass.IsFeatureFile(inFile)
         ? FeatureInfoClass.GetDataset(inFile)
         : RasterDataInfoClass.GetDataset(inFile));
 }