AE地图数据打开方式小结

1、打开shp 格式文件并返回图层,本地和GDB:

public IFeatureLayer AddShp(string filePath)
    {
        IWorkspaceFactory workspaceFactory = null;
        string fileName = "";
        if (filePath.Contains(".gdb"))
        {
            workspaceFactory = new FileGDBWorkspaceFactory();
            fileName = System.IO.Path.GetFileNameWithoutExtension(filePath);
        }
        else
        {
            workspaceFactory = new ShapefileWorkspaceFactory();
            fileName = System.IO.Path.GetFileName(filePath);
        }
        IWorkspace workspace = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(filePath), 0);
        IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
        IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(fileName);
        IFeatureLayer featureLyr = new FeatureLayerClass();
        featureLyr.FeatureClass = featureClass;
        featureLyr.Name = System.IO.Path.GetFileNameWithoutExtension(filePath);
        return featureLyr;
    }

2、打开rester并返回图层,本地和GDB:

public IRasterLayer GetRasterLayer(string path)
    {
        IRasterLayer rasterLayer = new RasterLayer();
        if (!path.Contains(".gdb"))
        {
            rasterLayer.CreateFromFilePath(path);
        }
        else
        {
            IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory();
            IWorkspace raster = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(path), 0);
            IRasterWorkspaceEx ra = raster as IRasterWorkspaceEx;
            IRasterDataset rdata = ra.OpenRasterDataset(System.IO.Path.GetFileName(path));
            rasterLayer.CreateFromDataset(rdata);
        }
        return rasterLayer;
    }

3、打开栅格图层的属性表并按条件查找

public void GetTable(IRasterLayer kRasterLayer, int rasterValue)
    {          
        IRasterBandCollection pRasterBC = (IRasterBandCollection)kRasterLayer.Raster;
        IRasterBand pRasterBand = pRasterBC.Item(0);
        ITable pTable = pRasterBand.AttributeTable;           
         IQueryFilter pQueryFilter = new QueryFilterClass();
        pQueryFilter.WhereClause = "VALUE=" + rasterValue.ToString();
        ICursor pCursor = pTable.Search(pQueryFilter, false);
        IRow row = pCursor.NextRow();
        int result = row.Table.FindField("列名");      
         }

4、打开gdb中的属性表,按条件查找特定行的特定属性

private double TableValue(string tablePath)
    {
        IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactory();
        IWorkspace ta = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(tablePath), 0);
        IFeatureWorkspace work = ta as IFeatureWorkspace;
        ITable table = work.OpenTable(System.IO.Path.GetFileName(tablePath));
        IQueryFilter filter = new QueryFilterClass();
        filter.WhereClause = "PAC='2'";
        ICursor cursor = table.Search(filter, false);
        IRow row = cursor.NextRow();
        int MeanIndex = table.FindField("MEAN");                 
        return MeanIndex;
    }

猜你喜欢

转载自blog.csdn.net/qq_39967296/article/details/89440129