Arcgis使用arcpy按字段属性csv表文件批量添加要素字段(新建空白数据库等)

压缩包下载

首先下载压缩包,解压将.py文件和.csv文件放在已建好的shp要素文件(可存在多个)同一目录下

 打开.csv文件对应修改为自己需要的格式,具体如下:

修改好数据库.csv文件后,.py文件右键打开菜单,红框均可运行(Edit打开后按F5运行),运行一段时间后文件夹内所有.shp均添加需要的字段

窗口运行等待2分钟后可以看到shp文件已有新建字段

源代码:(arcgis10.x或arcgisPro版arcpy均可使用),如有交流想法或指正请联系q775915005

#coding=utf-8
import arcpy
import copy
import os
import logging

folder = os.getcwd()
# files=os.listdir(folder)  # 根据需要的文件类型获取目录下文件名列表


feature_classes = []
csvname = []
walk = arcpy.da.Walk(folder)
for dirpath, dirnames, filenames in walk:
    for filename in filenames:
        if filename.endswith("csv") and not filename.startswith("~$"):

            csvname.append(os.path.join(dirpath, filename))
        elif filename.endswith("shp") and not filename.startswith("~$"):
            feature_classes.append(os.path.join(dirpath, filename))
    # csvname1 = [i for i in filenames if i.endswith("csv") and not i.startswith("~$")]

print(csvname,feature_classes)


csvpath = os.path.join(folder, csvname[0])

with open(csvpath, "r") as f:
    file1 = f.readlines()
    try:

        for line0 in file1:
            # line.replace(",\\n","")
            line1 =line0.rstrip("\n")
            p0 = line1.split(",")

            if p0[-1] == "":
                p0.pop(-1)
            for i in feature_classes:
                Fcpath = os.path.join(folder, i)
                if p0[1] == "TEXT":
                    arcpy.AddField_management(Fcpath, field_name=p0[0], field_type=p0[1], field_length=p0[2])
                else:
                    if len(p0) == 2:
                        arcpy.AddField_management(Fcpath, field_name=p0[0], field_type=p0[1])
                    elif len(p0) == 3:
                        arcpy.AddField_management(Fcpath, field_name=p0[0], field_type=p0[1], field_precision=p0[2])
                    elif len(p0) == 4:
                        arcpy.AddField_management(Fcpath, field_name=p0[0], field_type=p0[1], field_precision=p0[2], field_scale=p0[3])

    except arcpy.ExecuteError:
        print(arcpy.GetMessages())

    except Exception as ex:
        print(ex.args[0])





### ArcGIS 中调整属性字段顺序的方法 在 ArcGIS 中直接修改字段顺序的功能并未被集成到软件界面中[^1]。然而,有几种间接方法可以实现这一目标。 #### 方法一:利用地理处理工具 一种有效的方式是使用地理处理工具中的“合并”功能。此过程不仅能够整合多个图层还可以重新排列字段顺序。具体来说,“合并”工具允许用户指定输入要素类以及定义输出要素类结构,在这个过程中可以选择并重排所需字段[^3]。 ```python import arcpy input_features = ["path/to/feature_class_1", "path/to/feature_class_2"] output_feature_class = r"path\to\new_merged_fc" arcpy.management.Merge(input_features, output_feature_class) ``` 这种方法的优势在于它提供了永久性的解决方案而不需要创建新的字段或者手动复制粘贴数据。 #### 方法二:导出至外部编辑再导入 另一种方案涉及将属性导出为文本文件(如 CSV 或 TXT),然后使用 Excel 这样的电子格程序来调整列的位置。完成编辑后再把更新后的格重新加载回 ArcGIS 并连接到原始空间几何上[^2]。 虽然这种方式相对灵活但是需要注意保持唯一标识符的一致性以便正确关联地理位置信息。 #### 方法三:通过 Python 脚本自动化流程 对于熟悉编程的人来说,编写一段简单的 Python 脚本来批量处理也是可行的选择之一。下面是一个简化版的例子展示如何读取现有字段并对它们进行排序: ```python fields = [f.name for f in arcpy.ListFields("your_layer")] sorted_fields = sorted(fields) # 可自定义排序逻辑 print(sorted_fields) ``` 尽管上述代码片段仅展示了获取和打印已排序的字段名,实际应用时可以根据需求进一步扩展以达到自动重组的目的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值