//获取表|表字段
IDisplayTable pDisplayTable = pLayer as IDisplayTable;
ITable table=pDisplayTable.DisplayTable;
ITable pTable = pLayer.FeatureClass as ITable;
//方法一:获取具体某个
pTable.GetRow(3).get_Value(4);//表的第第三行的第四列的值
//方法二:批量获取\超快
IFeatureCursor Cursor = pLayer.FeatureClass.Search(new QueryFilterClass(), false);
IFeature feature = Cursor.NextFeature();
IField= feature.get_Value(i);
feature = Cursor.NextFeature();
//方法三
pFeatureLayer as ILayerFields;
IField=ILayerFields.get_Field(i);
//方法四:根据字段名获取字段
public IField GetFieldByName(IFeatureClass featureClass, String fieldName)
{
int fieldIndex = featureClass.FindField(fieldName);
IFields fields = featureClass.Fields;
IField field = fields.get_Field(fieldIndex);
return field;
}
//字段统计
//Find the selected field in the feature layer
IFeatureClass featureClass = m_featureLayer.FeatureClass;
IField field = featureClass.Fields.get_Field(featureClass.FindField(comboBox1.Text));
//Get a feature cursor
ICursor cursor = (ICursor) m_featureLayer.Search(null, false);
//Create a DataStatistics object and initialize properties
IDataStatistics dataStatistics = new DataStatisticsClass();
dataStatistics.Field = field.Name;
dataStatistics.Cursor = cursor;
//Get the result statistics
IStatisticsResults statisticsResults = dataStatistics.Statistics;
//Set the values min and max values
textBox2.Text = statisticsResults.Minimum.ToString();
textBox3.Text = statisticsResults.Maximum.ToString();
textBox1.Text = "10";
//属性条件查询
IQueryFilter queryFilter=new QueryFilterClass();
queryFilter.SubFields = "NAME, ADDRESS";//只查这几个字段
queryFilter.WhereClause = "";
pFeatureClass.Search (queryFilter, false);//返回IFeatureCursor对象
//查询
QueryFilter:WhereClause,SubFields
ICursor::NextFeature()
1. QueryDef:Tables,Evaluate()返回结果集的ICursor可以基于行遍历
2. IFeatureLayer.Search()获得IFeatureCursor用于遍历
3. IFeatureLayer的IFeatureSelection.SelectFeatures(),SelectionSet//只有IFeatureSelection会高亮显示
//修改行
IRow dtRow = table.GetRow(j);//获得第i行 465
DataRow excelRow = excelTable.Rows[i];//获得第i行 234
dtRow.set_Value(3, excelRow[2]);
dtRow.set_Value(4, excelRow[3]);
dtRow.set_Value(5, excelRow[4]);
dtRow.Store();
pRow.Delete();
//添加字段
IFieldEdit field3 = new FieldClass();
field3.Name_2 = strFieldName;
field3.Type_2 = esriFieldType.esriFieldTypeDouble;
int theField = pFeatureLayer.FeatureClass.Fields.FindField(strFieldName);
if (theField == -1)
{
pFeatureLayer.FeatureClass.AddField(field3);
MessageBox.Show("字段添加成功!");
}
else
{
MessageBox.Show("字段已经存在!");
}
工作空间到字段的类关系
在讨论地理数据库时,“表”通常意味着“对象类”
//别忘了释放要素游标对象. Marshal.ReleaseComObject(fCursor);
ITable ObjectClass FeatureClass
包含 行 对象 要素
行创建方法 ITable.CreateRow ITable.CreateRow IFeatureClass.CreateFeature
支持子类型 假 真 真
支持域名 假 真 真
必填字段 没有 对象ID ObjectID,形状
如果需要将字段添加到现有数据集或从现有数据集中删除,则必须使用IClass接口(或扩展IClass的接口)而不是IFieldsEdit。
IClass接口有以下直接使用字段的方法:AddField、DeleteField、FindField
搜索游标 -检查和编辑行。更新游标 -编辑和删除行。插入游标 - 将新行添加到表中。
//8.列出数据
//方法 描述
ListDatasets(字符串通配符,字符串数据集类型) 根据查询字符串和类型返回当前工作空间中数据集的枚举
ListFeatureClasses(字符串通配符,字符串要素类型,字符串数据集) 根据查询字符串和类型返回当前工作空间或可选数据集中要素类的枚举
ListRasters(字符串通配符,字符串栅格类型) 根据查询字符串和类型返回当前工作空间中的栅格枚举
ListTables(字符串通配符,字符串表类型) 根据查询字符串和类型返回当前工作空间中的表的枚举
ListWorkspaces(字符串通配符,字符串WorkspaceType) 根据查询字符串和类型返回当前工作空间中工作空间的枚举
//方法 键入关键字
ListDatasets 所有,功能,覆盖范围,RasterCatalog,CAD,VPF,TIN,拓扑
ListFeatureClasses 所有,点,标签,节点,线,弧,路线,多边形,地区
ListFields All,SmallInteger,Integer,Single,Double,String,Date,OID,Geometry,BLOB
ListWorkspaces 所有,覆盖范围,访问,SDE,文件夹
ListTables 所有,dBASE,INFO
ListRasters All,ADRG,BIL,BIP,BSQ,BMP,CADRG,CIB,ERS,GIF,GIS,GRID,STACK,IMG,JPG,JP2,LAN,SID,SDE,TIF,RAW,PNG,NTF,DDF,RST, HDF