向图层添加字段

 /// <summary>
        /// 向图层添加字段
        /// </summary>
        /// <param name="layer">图层对象</param>
        /// <param name="name">字段名称</param>
        /// <param name="alias">字段别名</param>
        /// <param name="type">字段类型</param>
        public static void AddField(ILayer layer, string name, string alias, esriFieldType type)
        {
            if (alias == "")
            {
                alias = name;
            }
            try
            {
                IFeatureLayer flayer = (IFeatureLayer)layer;
                IFeatureClass fclass = flayer.FeatureClass;
                IField newField = new FieldClass();
                IFieldEdit fieldEdit = (IFieldEdit)newField;
                fieldEdit.Name_2 = name;
                fieldEdit.Type_2 = type;
                fieldEdit.AliasName_2 = alias;
                fclass.AddField(newField);
            }
            catch (Exception)
            {
                ;
            }
        }

        /// <summary>
        /// 向图层添加字段
        /// </summary>
        /// <param name="layer">图层对象</param>
        /// <param name="name">字段名称</param>
        /// <param name="alias">字段别名</param>
        /// <param name="type">字段类型</param>
        /// <param name="length">字段长度</param>
        public static void AddField(ILayer layer, string name, string alias, esriFieldType type, int length)
        {
            if (alias == "")
            {
                alias = name;
            }
            try
            {
                IFeatureLayer flayer = (IFeatureLayer)layer;
                IFeatureClass fclass = flayer.FeatureClass;
                IField newField = new FieldClass();
                IFieldEdit fieldEdit = (IFieldEdit)newField;
                fieldEdit.Name_2 = name;
                fieldEdit.Type_2 = type;
                fieldEdit.AliasName_2 = alias;
                fieldEdit.Length_2 = length;
                fclass.AddField(newField);
            }
            catch (Exception)
            {
                ;
            }
        }

        /// <summary>
        /// 向图层添加字段
        /// </summary>
        /// <param name="featureLayer">图层对象</param>
        /// <param name="name">字段名称</param>
        /// <param name="alias">字段别名</param>
        /// <param name="type">字段类型</param>
        public static void AddField(IFeatureLayer featureLayer, string name, string alias, esriFieldType type)
        {
            if (alias == "")
            {
                alias = name;
            }
            try
            {
                IFeatureLayer flayer = featureLayer;
                IFeatureClass fclass = flayer.FeatureClass;
                IField newField = new FieldClass();
                IFieldEdit fieldEdit = (IFieldEdit)newField;
                fieldEdit.Name_2 = name;
                fieldEdit.Type_2 = type;
                fieldEdit.AliasName_2 = alias;
                fclass.AddField(newField);
            }
            catch (Exception)
            {
                ;
            }
        }

        /// <summary>
        /// 向图层添加字段
        /// </summary>
        /// <param name="featureLayer">图层对象</param>
        /// <param name="name">字段名称</param>
        /// <param name="alias">字段别名</param>
        /// <param name="type">字段类型</param>
        /// <param name="length">字段长度</param>
        public static void AddField(IFeatureLayer featureLayer, string name, string alias, esriFieldType type, int length)
        {
            if (alias == "")
            {
                alias = name;
            }
            try
            {
                IFeatureLayer flayer = featureLayer;
                IFeatureClass fclass = flayer.FeatureClass;
                IField newField = new FieldClass();
                IFieldEdit fieldEdit = (IFieldEdit)newField;
                fieldEdit.Name_2 = name;
                fieldEdit.Type_2 = type;
                fieldEdit.AliasName_2 = alias;
                fieldEdit.Length_2 = length;
                fclass.AddField(newField);
            }
            catch (Exception)
            {
                ;
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在使用 pyshp 读取矢量图层后,继承原图层的所有字段,并在写出数据时给指定字段赋值,你可以使用 pyshp 库的 `shapeRecords()` 方法。以下是一个示例代码,展示了如何实现该功能: ```python import shapefile # 读取原图层数据 original_sf = shapefile.Reader('original_shapefile') # 获取原图层字段名称和属性 fields = original_sf.fields[1:] field_names = [field[0] for field in fields] # 获取原图层的记录和几何形状 records = original_sf.shapeRecords() # 创建新的 Shapefile writer 对象 w = shapefile.Writer('new_shapefile', shapeType=shapefile.POINT) # 继承原图层字段属性 for field in fields: w.field(*field) # 写入数据并给指定字段赋值 for record in records: # 获取原图层记录的属性值 attributes = record.record # 创建新的记录并赋值 new_record = [] for field_name in field_names: if field_name == '指定字段': new_record.append('指定字段的值') else: new_record.append(attributes[field_name]) # 写入记录和几何形状 w.record(*new_record) w.shape(record.shape) # 保存新的 Shapefile w.save('new_shapefile') ``` 在上面的示例中,我们首先使用 `shapefile.Reader()` 方法读取原始图层数据,并获取字段名称和属性。然后,我们使用 `shapeRecords()` 方法获取原始图层的记录和几何形状。 接下来,我们创建一个新的 Shapefile writer 对象,并使用 `w.field()` 方法继承原始图层字段属性。然后,我们遍历原始图层的记录,创建新的记录,并给指定字段赋值。最后,我们使用 `w.record()` 和 `w.shape()` 方法将记录和几何形状写入新的 Shapefile。 请根据你的实际需求修改代码中的文件名、字段名称和赋值部分。这个示例可以帮助你理解如何继承原图层字段属性并给指定字段赋值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值