您的位置:首页 > 编程语言 > C#

显示栅格图层和矢量图层的属性表(AE开发)

2017-07-12 14:33 351 查看
转载自:http://blog.csdn.net/xwebsite/article/details/4850383

显示栅格图层和矢量图层的属性表

定义一个函数showAttributeTable()用于显示栅格图层或矢量数据图层的属性表,其参数pLyr为要显示属性的图层,在程序中添加一个dataGridView控件用于显示属性表。该函数的代码如下:

private void showAttributeTable(ILayer pLyr)

{

if (pLyr is IFeatureLayer)

{

DataTable pTable = new DataTable();

IFeatureLayer pFealyr = pLyr as IFeatureLayer;

IFeatureClass pFCls = pFealyr.FeatureClass;

string shape = "";

if (pFCls.ShapeType == esriGeometryType.esriGeometryPoint)

shape = "Point";

else if (pFCls.ShapeType == esriGeometryType.esriGeometryPolyline)

shape = "Polyline";

else if (pFCls.ShapeType == esriGeometryType.esriGeometryPolygon)

shape = "Polygon";

for (int i = 0; i < pFCls.Fields.FieldCount; i++)

{

pTable.Columns.Add(pFCls.Fields.get_Field(i).Name);

}

IFeatureCursor pCursor = pFCls.Search(null, false);

int ishape = pFCls.Fields.FindField("Shape");

IFeature pFea = pCursor.NextFeature();

while (pFea != null)

{

DataRow pRow = pTable.NewRow();

for (int i = 0; i < pFCls.Fields.FieldCount; i++)

{

if (i == ishape)

{

pRow[i] = shape;

continue;

}

pRow[i] = pFea.get_Value(i).ToString();

}

pTable.Rows.Add(pRow);

pFea = pCursor.NextFeature();

}

dataGridView1.DataSource = pTable;

}

else if (pLyr is IRasterLayer)

{

IRasterLayer pRlyr = pLyr as IRasterLayer;

IRaster pRaster = pRlyr.Raster;

IRasterProps pProp = pRaster as IRasterProps;

pProp.PixelType = rstPixelType.PT_LONG;

if (pProp.PixelType == rstPixelType.PT_LONG)

{

IRasterBandCollection pBcol = pRaster as IRasterBandCollection;

IRasterBand pBand = pBcol.Item(0);

ITable pRTable = pBand.AttributeTable;

DataTable pTable = new DataTable();

for (int i = 0; i < pRTable.Fields.FieldCount; i++)

pTable.Columns.Add(pRTable.Fields.get_Field(i).Name);

ICursor pCursor = pRTable.Search(null, false);

IRow pRrow = pCursor.NextRow();

while (pRrow != null)

{

DataRow pRow = pTable.NewRow();

for (int i = 0; i < pRrow.Fields.FieldCount; i++)

{

pRow[i] = pRrow.get_Value(i).ToString();

}

pTable.Rows.Add(pRow);

pRrow = pCursor.NextRow();

}

dataGridView1.DataSource = pTable;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  AE开发 C# datagridview