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

本文介绍了一个用于GIS应用程序的功能,能够显示栅格图层和矢量图层的属性表。通过定义一个通用函数showAttributeTable(),可以针对不同类型的图层(如点、线、面矢量图层和栅格图层)提取并展示其属性信息。

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

定义一个函数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;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值