예제 #1
0
        /// <summary>
        /// 获取栅格图层的属性表
        /// </summary>
        /// <param name="layer">栅格图层</param>
        /// <param name="queryFilter2">过滤条件</param>
        /// <returns></returns>
        public static DataTable GetRasterTableByLayer(ILayer layer, IQueryFilter2 queryFilter2 = null)
        {
            ITable iTable = BuildRasterAttributeTable(layer);

            //ITable iTable = (ITable)layer; //若已存在属性表,直接用该行代码
            return(AttributeTableClass.GetAttributeTableByITable(iTable));
        }
        /// <summary>
        /// convert FeatureClass in Recordset
        /// </summary>
        /// <param name="featureClass">feature class input</param>
        /// <param name="queryFilter">query filter</param>
        /// <returns>return Recordset</returns>
        internal static IRecordSet2 ConvertToRecordset(IFeatureClass featureClass, IQueryFilter2 queryFilter)
        {
            IRecordSet     recordSet     = new RecordSetClass();
            IRecordSetInit recordSetInit = recordSet as IRecordSetInit;

            recordSetInit.SetSourceTable(featureClass as ITable, queryFilter);

            return((IRecordSet2)recordSetInit);
        }
예제 #3
0
        /// <summary>
        /// 获取图层指定字段名称的属性表
        /// </summary>
        /// <param name="layer">图层</param>
        /// <param name="queryFilter2">查询条件</param>
        /// <param name="rowCount">显示的行数</param>
        /// <param name="inFieldName">指定字段名称</param>
        /// <returns>属性表</returns>
        public static DataTable GetAttributeTable(ILayer layer, Dictionary <string, int> inFieldName,
                                                  IQueryFilter2 queryFilter2 = null, int rowCount = 0)
        {
            HashSet <string> fieldNames = new HashSet <string>();

            foreach (var key in inFieldName.Keys)
            {
                fieldNames.Add(key);
            }
            return(GetAttributeTableByITable(GetITableByLayer(layer), fieldNames, FeatureInfoClass.GetShapeType(layer),
                                             queryFilter2, rowCount));
        }
예제 #4
0
 public static IRecordSet2 ConvertToRecordset(IFeatureClass featureClass, IQueryFilter2 queryFilter)
 {
     if (null != featureClass)
     {
         IRecordSet     recordSet     = new RecordSetClass();
         IRecordSetInit recordSetInit = recordSet as IRecordSetInit;
         recordSetInit.SetSourceTable(featureClass as ITable, queryFilter);
         return((IRecordSet2)recordSetInit);
     }
     else
     {
         return(null);
     }
 }
예제 #5
0
        /// <summary>
        /// 获取空间表格的属性表
        /// </summary>
        /// <param name="iTable">空间表格</param>
        /// <param name="shapeType">图层几何类型</param>
        /// <param name="queryFilter2">查询条件</param>
        /// <param name="rowCount">显示的行数</param>
        /// <returns>属性表</returns>
        public static DataTable GetAttributeTableByITable(ITable iTable, string shapeType = "",
                                                          IQueryFilter2 queryFilter2      = null, int rowCount = 0)
        {
            if (iTable == null)
            {
                return(null);
            }
            HashSet <string> selectFieldName = new HashSet <string>();
            IFields          fields          = iTable.Fields;

            for (int i = 0; i < fields.FieldCount; i++)
            {
                IField field = fields.Field[i];
                selectFieldName.Add(field.Name);
            }
            return(GetAttributeTableByITable(iTable, selectFieldName, shapeType, queryFilter2, rowCount));
        }
예제 #6
0
        /// <summary>
        /// 获取空间表格指定字段名称的属性表
        /// </summary>
        /// <param name="iTable">空间表格</param>
        /// <param name="queryFilter2">查询条件</param>
        /// <param name="shapeType">图层几何类型</param>
        /// <param name="rowCount">显示的行数</param>
        /// <param name="selectFieldName">指定字段名称</param>
        /// <returns>属性表</returns>
        public static DataTable GetAttributeTableByITable(ITable iTable, HashSet <string> selectFieldName,
                                                          string shapeType = "", IQueryFilter2 queryFilter2 = null, int rowCount = 0)
        {
            if (iTable == null)
            {
                return(null);
            }
            ICursor pCursor = iTable.Search(queryFilter2, false);
            IRow    pRow    = pCursor.NextRow();

            if (pRow == null)
            {
                return(null);
            }
            IFields   fields    = pRow.Fields;
            DataTable dataTable = new DataTable();

            for (int i = 0; i < fields.FieldCount; i++)
            {
                //字段名称在指定列表
                if (IsFieldContainInList(fields.Field[i], selectFieldName))
                {
                    dataTable = AddTableColumnsByField(fields.Field[i], dataTable);
                }
            }
            while (pRow != null)
            {
                //新建DataTable的行对象
                DataRow pDataRow = dataTable.NewRow();
                SetDataRow(pRow, pDataRow, selectFieldName, shapeType);
                //添加DataRow到DataTable
                dataTable.Rows.Add(pDataRow);
                pRow = pCursor.NextRow();
                //设置行数
                if (rowCount != 0 && dataTable.Rows.Count == rowCount)
                {
                    break;
                }
            }
            return(dataTable);
        }
예제 #7
0
 /// <summary>
 /// 获取图层指定字段名称的属性表
 /// </summary>
 /// <param name="layer">图层</param>
 /// <param name="queryFilter2">查询条件</param>
 /// <param name="rowCount">显示的行数</param>
 /// <param name="inFieldName">指定字段名称</param>
 /// <returns>属性表</returns>
 public static DataTable GetAttributeTable(ILayer layer, HashSet <string> inFieldName,
                                           IQueryFilter2 queryFilter2 = null, int rowCount = 0)
 {
     return(GetAttributeTableByITable(GetITableByLayer(layer), inFieldName, FeatureInfoClass.GetShapeType(layer),
                                      queryFilter2, rowCount));
 }