/// <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); }
/// <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)); }
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); } }
/// <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)); }
/// <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); }
/// <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)); }