ArcGIS接口详细说明 下载本文

//从ILayer查询到ITable ITable pTable = pLayer as ITable; ICursor pCursor = pTable.Search(null, false);

//取得ITable中的行信息 IRow pRow = pCursor.NextRow(); int n = 0;

while (pRow != null) {

//新建DataTable的行对象 pDataRow = pDataTable.NewRow(); for (int i = 0; i < pRow.Fields.FieldCount; i++) {

//如果字段类型为esriFieldTypeGeometry,则根据图层类型设置字段值 if (pRow.Fields.get_Field(i).Type==esriFieldType.esriFieldTypeGeometry)

{ pDataRow = shapeType; }

//当图层类型为Anotation时,要素类中会有esriFieldTypeBlob类型的数据, //其存储的是标注内容,如此情况需将对应的字段值设置为Element else if (pRow.Fields.get_Field(i).Type== esriFieldType.esriFieldTypeBlob) {

pDataRow = \ } else {

pDataRow= pRow.get_Value(i); } }

//添加DataRow到DataTable pDataTable.Rows.Add(pDataRow); pDataRow = null; n++;

pRow = pCursor.NextRow(); ////为保证效率,一次只装载最多条记录 //if (n == 2000) //{

// pRow = null; //} //else //{

// pRow = pCursor.NextRow(); //} }

return pDataTable; }

===============================

回答gjw1015关于IFeature变量添加进List数组里的问题 ===============================

ListlistFeature = new List(); try {

pFC_TER_LN = pFeatureWorkspace.OpenFeatureClass(\ } catch {

richTextBox1.SelectionStart =richTextBox1.Text.Length;

richTextBox1.SelectedText = \地形图:\中没有TER_LN_l图层!\\n\ richTextBox1.Refresh(); continue; }

for (int i = 0; i < pFC_TER_LN.FeatureCount([color=Red]null[/color]);i++) ///将该图层的每个Feature提取出来以供编辑时依次赋值,并且可以设置FeatureCount方法的参数为一个IQueryFilter类型的变量,就可以实现你所要求的方法了,用Search()方法,应该是不可以的,希望你们试一下。 {

pFeatrue = pFC_TER_LN.GetFeature(i); listFeature.Add(pFeatrue); }