/// <summary> /// 删除栅格图层字段(字符串字段) /// </summary> /// <param name="rasterLayer">栅格图层</param> /// <returns></returns> public static IRasterLayer DeleteRasterStringField(IRasterLayer rasterLayer) { if (!IsRasterLayerHaveTable(rasterLayer.Raster)) { return(rasterLayer); } ITable oldTable = (ITable)rasterLayer; //判断是否存在字符串字段 bool hasString = LayerFieldInfo.IsTableHasFieldType(oldTable, esriFieldType.esriFieldTypeString); //不需要删除,则返回原始图层 if (!hasString) { return(rasterLayer); } ILayer copyLayer = RasterLayerCopy.CopyAsTempRasterLayer(rasterLayer.FilePath); if (copyLayer == null) { return(null); } //删除字符串类型字段 ILayer layer = DeleteFieldClass.DeleteFieldType(copyLayer, esriFieldType.esriFieldTypeString); return((IRasterLayer)layer); }
/// <summary> /// 添加新字段 /// </summary> /// <param name="fieldName">字段名称</param> /// <param name="fieldType">字段类型</param> public void AddNewFiled(string fieldName, esriFieldType fieldType) { ITable iTable = AttributeTableClass.GetITableByLayer(newFieldLayer); //先删除 DeleteFieldClass.DeleteField(iTable, fieldName); //再添加 iTable.AddField(NewFieldClass.GetNewFieldEdit(fieldName, fieldType)); AddTableColumn(fieldName, fieldName); }
/// <summary> /// 添加多个新字段 /// </summary> /// <param name="fieldNames"></param> /// <param name="fieldType">字段类型</param> public void AddNewFields(List <string> fieldNames, esriFieldType fieldType) { ITable iTable = AttributeTableClass.GetITableByLayer(newFieldLayer); foreach (string fieldName in fieldNames) { //先删除 DeleteFieldClass.DeleteField(iTable, fieldName); //再添加 iTable.AddField(NewFieldClass.GetNewFieldEdit(fieldName, fieldType)); } AddTableColumns(fieldNames); }