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;
}