ArcEingine属性表读取并加载到GridView

读取属性表是AE开发中经常见到的,这里对该项功能的实现进行详细的描述,在示例代码中有详细介绍,在这里不再赘述。代码如下:

public DataTable InitDataTable(IFeatureLayer pFeatureLayer )//pFeatureLayer 是读取的要素集,也就是MapControl中的一个ILayer

        {
            
            if (pFeatureLayer == null)
                return;
            IFeature pFeature = null;
            IFeatureCursor pFeatureCurrsor = pFeatureLayer.Search(null, true);//获得要素集中的要素光标,pFeatureLayer.Search
                                                                             //的第二个参数可以对读取的要素进行筛选。
            DataTable dataTable = new DataTable();//GridView的数据源
            DataColumn dataCol = null;//读取列,是用来获得列的字段数据类型以及字段名
            DataRow dataRow = null;//读取行,获得单元数据
            IField pField = null;//字段
            for (int i = 0; i < pFeatureLayer.FeatureClass.Fields.FieldCount; i++)
            {
                dataCol = new DataColumn();
                pField = pFeatureLayer.FeatureClass.Fields.get_Field(i); //获得属性表中的字段       
                dataCol.ColumnName = pField.AliasName;//获得字段名
                dataCol.DataType = System.Type.GetType(ParseFieldType(pField.Type));//获得Winform中与ESRI想对应的数据类型
                dataTable.Columns.Add(dataCol);//填充数据
            }
            pFeature = pFeatureCurrsor.NextFeature();//获得第一个符合要求的Feature,即一行数据(要素个体、要素类)
            //IGeometry pPolGeo = pFeature.Shape;
            //IRelationalOperator pRel = pPolGeo as IRelationalOperator;
            while (pFeature != null)
            {
               
                        dataRow = dataTable.NewRow();
                        for (int i = 0; i < dataTable.Columns.Count; i++)
                        {
                            dataRow[i] = pFeature.get_Value(i);//通过遍历得到IFeature中的数据
                        }
                        dataTable.Rows.Add(dataRow);//增加一行
                        pFeature = pFeatureCurrsor.NextFeature();//获得下一个IFeature
                   

            }
            return dataTable;
           // dataGridView1.DataSource = dataTable;//加载到GridView示例
            //StaticValue.yztable = dataTable;
        }
               /// <summary>
        /// 得Winform中与ESRI想对应的数据类型,没有的使用string
        /// </summary>
        /// <param name="esriFieldType "></param>
        public static string ParseFieldType(esriFieldType fieldType)
        {

            switch (fieldType)
            {

                case esriFieldType.esriFieldTypeBlob:

                    return "System.String";

                case esriFieldType.esriFieldTypeDate:

                    return "System.DateTime";

                case esriFieldType.esriFieldTypeDouble:

                    return "System.Double";

                case esriFieldType.esriFieldTypeGeometry:

                    return "System.String";

                case esriFieldType.esriFieldTypeGlobalID:

                    return "System.String";

                case esriFieldType.esriFieldTypeGUID:

                    return "System.String";

                case esriFieldType.esriFieldTypeInteger:

                    return "System.Int32";

                case esriFieldType.esriFieldTypeOID:

                    return "System.String";

                case esriFieldType.esriFieldTypeRaster:

                    return "System.String";

                case esriFieldType.esriFieldTypeSingle:

                    return "System.Single";

                case esriFieldType.esriFieldTypeSmallInteger:

                    return "System.Int32";

                case esriFieldType.esriFieldTypeString:

                    return "System.String";

                default:

                    return "System.String";

            }

        }
上面的就是对属性表读取的一般方法,如果有错误的地方欢迎各位看官指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值