Geodatabase - 修改字段别名(Field Alias)
以下代码演示的是通过个人数据库打开要素类,并对指定的字段别名进行修改,其中,需要注意的是,不能通过Engine中的AxMapControl直接获得,如
1 //直接获得IFeatureClass. 2 //ESRI.ArcGIS.Carto.ILayer lyr = mapCtrl_main.get_Layer(0); 3 //ESRI.ArcGIS.Carto.IFeatureLayer flyr = (ESRI.ArcGIS.Carto.IFeatureLayer)lyr; 4 //ESRI.ArcGIS.Geodatabase.IFeatureClass fc = flyr.FeatureClass;
这样是不可以的:
1 /// <summary> 2 /// 修改字段别名. 3 /// </summary> 4 /// <param name="personalWorkspacePath">个人数据库路径(当然可以为其他类型数据库),如"G:\doc\gis\1.400\data\pdb.mdb"</param> 5 /// <param name="featureClassName">要素类名,如"hyd1_4l_1"</param> 6 /// <param name="oriFieldName">原字段别名,如"FNODE_".</param> 7 /// <param name="desFieldName">新字段别名,如"fnode".</param> 8 private void AlterFieldAliasName(string personalWorkspacePath, string featureClassName, string oriFieldName, string desFieldName) { 9 //通过IFeatureWorkspace获得IFeatureClass. 10 ESRI.ArcGIS.Geodatabase.IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass(); 11 ESRI.ArcGIS.Geodatabase.IWorkspace ws = wsf.OpenFromFile(personalWorkspacePath, 0); 12 ESRI.ArcGIS.Geodatabase.IFeatureWorkspace fws = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)ws; 13 ESRI.ArcGIS.Geodatabase.IFeatureClass fc = fws.OpenFeatureClass(featureClassName); 14 15 ESRI.ArcGIS.Geodatabase.ITable t = (ESRI.ArcGIS.Geodatabase.ITable)fc; 16 if (t.FindField(oriFieldName) == -1) //无指定字段名. 17 return; 18 19 ESRI.ArcGIS.Geodatabase.IObjectClass objClass = (ESRI.ArcGIS.Geodatabase.IObjectClass)fc; 20 ESRI.ArcGIS.Geodatabase.ISchemaLock slock = (ESRI.ArcGIS.Geodatabase.ISchemaLock)objClass; 21 try { 22 slock.ChangeSchemaLock(ESRI.ArcGIS.Geodatabase.esriSchemaLock.esriExclusiveSchemaLock); 23 ESRI.ArcGIS.Geodatabase.IClassSchemaEdit cSchemaEdit = (ESRI.ArcGIS.Geodatabase.IClassSchemaEdit)t; 24 cSchemaEdit.AlterFieldAliasName(oriFieldName, desFieldName); 25 MessageBox.Show("done"); 26 } 27 catch (System.Exception ex) { 28 MessageBox.Show(ex.Message); 29 } 30 finally { 31 if (slock != null) 32 slock.ChangeSchemaLock(ESRI.ArcGIS.Geodatabase.esriSchemaLock.esriSharedSchemaLock); 33 } 34 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。