DeepSeek结合ArcGIS Pro制作一个批量建库的脚本工具(代码一字未改,直接运行)

    DeepSeek最近红的发紫。我没兴趣让他去评论我们的行业,因为我们这个行业有一个很大的护城河——“数据涉密”,所以一个东西总有两面性。

     既然不谈论什么行业远景,不去想我们牛马人生会不会被AI替代,我们还是想想该如何运用AI配合好我们的行业,提高我们的工作效率。

    今天我们一起来做一个实盘测试,结合DeepSeek与ArcGIS Pro来完成实际工作的需求。(写出来来的代码我一字未改,真的强的可怕)。

图片

需求:利用python写一个arcgis的脚本工具箱实现批量添加字段功能,批量添加字段基于上传的excel提供的字段结构模板,构建一个GDB数据库要素类。

图片

我上传了EXCEL的要素的模板,并在DeepSpeek中给出需求

(注意:Excel模板及工具代码等获取见后文)

DeepSeek实测:

图片

推荐学习:ArcGIS Pro上线!终于和大家见面了······https://mp.weixin.qq.com/s?__biz=MzIzNjM2NTYxMg==&mid=2247525159&idx=1&sn=96785be177817048c8058b1886e57f80&scene=21#wechat_redirect

01

以下是DeepSeek中实测的结果

    以下为DeepSeek的实际测试并且配合我的一些截图以及ArcGIS Pro中的实际操作截图。

要实现基于Excel提供的字段结构模板批量添加字段到GDB数据库要素类的功能,可以使用Python结合ArcPy库来完成。以下是实现步骤和代码示例:


1. 脚本工具箱设计

  • 输入参数

    • 输入Excel文件路径(包含字段结构模板)

    • 目标GDB数据库路径

    • 目标要素类名称

  • 输出

    • 在目标GDB数据库中创建或修改要素类,并根据Excel模板添加字段。


2. Python脚本实现

以下是完整的Python脚本,用于根据Excel模板批量添加字段到GDB要素类:

import arcpyimport openpyxlimport os
# 定义脚本工具的参数input_excel = arcpy.GetParameterAsText(0)  # 输入Excel文件路径target_gdb = arcpy.GetParameterAsText(1)  # 目标GDB数据库路径target_fc_name = arcpy.GetParameterAsText(2)  # 目标要素类名称
# 检查输入文件是否存在if not os.path.exists(input_excel):    arcpy.AddError("输入的Excel文件不存在!")    raise Exception("输入的Excel文件不存在!")
# 检查目标GDB是否存在if not arcpy.Exists(target_gdb):    arcpy.AddError("目标GDB数据库不存在!")    raise Exception("目标GDB数据库不存在!")
# 构建目标要素类的完整路径target_fc = os.path.join(target_gdb, target_fc_name)
try:    # 打开Excel文件    workbook = openpyxl.load_workbook(input_excel)    sheet = workbook.active  # 获取第一个工作表
    # 读取Excel中的字段信息    fields_to_add = []    for row in sheet.iter_rows(min_row=2, values_only=True):  # 从第二行开始读取        field_name = row[1]  # 字段名        field_type = row[2]  # 字段类型        field_precision = row[3] if row[3] else None  # 字段精度        field_scale = row[4] if row[4] else None  # 字段小数位数        field_length = row[5] if row[5] else None  # 字段长度        field_alias = row[6]  # 字段别名        field_nullable = row[7]  # 字段可否为空        field_required = row[8]  # 字段是否必填
        # 将字段信息添加到列表中        fields_to_add.append({
  
              "name": field_name,            "type": field_type,            "precision": field_precision,            "scale": field_scale,            "length": field_length,            "alias": field_alias,            "nullable": field_nullable,            "required": field_required        })
    # 检查目标要素类是否存在    if not arcpy.Exists(target_fc):        arcpy.AddMessage(f"目标要素类 '{target_fc}' 不存在,正在创建...")        # 创建一个空的要素类(假设为面要素类)        arcpy.management.CreateFeatureclass(target_gdb, target_fc_name, "POLYGON")        arcpy.AddMessage(f"要素类 '{target_fc}' 创建成功!")
    # 遍历字段信息并添加到要素类    for field_info in fields_to_add:        field_name = field_info["name"]        field_type = field_info["type"]        field_alias = field_info["alias"]        field_length = field_info["length"]        field_precision = field_info["precision"]        field_scale = field_info["scale"]        field_nullable = field_info["nullable"]        field_required = field_info["required"]
        # 检查字段是否已存在        existing_fields = [f.name for f in arcpy.ListFields(target_fc)]        if field_name in existing_fields:            arcpy.AddMessage(f"字段 '{field_name}' 已存在,跳过添加。")            continue
        # 添加字段        arcpy.AddMessage(f"正在添加字段:{field_name} ({field_type})")        arcpy.management.AddField(            in_table=target_fc,            field_name=field_name,            field_type=field_type,            field_precision=field_precision,            field_scale=field_scale,            field_length=field_length,            field_alias=field_alias,            field_is_nullable="NULLABLE" if field_nullable else "NON_NULLABLE",            field_is_required="REQUIRED" if field_required else "NON_REQUIRED"        )
    arcpy.AddMessage("字段添加完成!")
except Exception as e:    arcpy.AddError(f"脚本运行失败:{str(e)}")

以下蓝字及截图为我操作步骤其余为AI提供:

新建一个txt,将代码复制粘贴进去,保存命名为BatchAddfield,并将后缀改为py,

图片

3. 创建ArcGIS脚本工具箱

  1. 打开ArcGIS Pro

    • 在“目录”窗格中,右键点击“工具箱”文件夹,选择“新建工具箱”。

    • 命名为BatchAddFields.tbx

    • 图片

  2. 添加脚本工具

    • 右键点击新建的工具箱,选择“添加” -> “脚本”。

    • 设置脚本名称(如BatchAddFields)和标签。

    • 点击“下一步”,选择刚刚编写的Python脚本文件。

    • 图片

      导入上述的脚本。

    • 图片

  3. 设置脚本参数

    • 参数1input_excel,数据类型为“文件”,方向为“输入”。

    • 参数2target_gdb,数据类型为“工作空间”,方向为“输入”。

    • 参数3target_fc_name,数据类型为“字符串”,方向为“输入”。

    • 添加三个参数:

    • 点击“完成”。

    • 图片

  4. 测试工具

    • 输入Excel文件路径(如批量添加字段模板.xlsx)。

    • 目标GDB数据库路径。

    • 目标要素类名称(如TestFeatureClass)。

    • 双击脚本工具,输入以下内容:

    • 运行工具,检查目标要素类中是否成功添加了字段。

      图片

      图片

      成功运行,得到结果如下。

      图片


4. 注意事项

  • Excel文件格式:确保Excel文件的字段结构模板与脚本中的解析逻辑一致。

  • 字段类型映射:ArcGIS字段类型与Excel中的字段类型需要正确映射(如Text对应TEXTDouble对应DOUBLE等)。

  • 要素类类型:脚本默认创建面要素类(POLYGON),可以根据需要修改为其他类型(如POINTLINE等)。


5. 示例运行

假设Excel文件内容如下:

序号字段名字段类型字段精度字段小数位数字段长度字段别名字段可否为空字段是否必填
1BSMText18标识码FalseFalse
2YSDMText10要素代码FALSEFalse
3XZQDMText12行政区代码FALSEFalse

运行脚本后,目标要素类中将添加以下字段:

  • BSM(标识码,文本类型,长度18)

  • YSDM(要素代码,文本类型,长度10)

  • XZQDM(行政区代码,文本类型,长度12)


6. 扩展功能

  • 字段类型验证:在添加字段前验证字段类型是否合法。

  • 批量处理多个要素类:扩展脚本以支持批量处理多个要素类。

  • 日志记录:添加日志功能,记录脚本运行状态和错误信息。

通过以上实现,脚本可以根据Excel模板批量添加字段到GDB要素类,满足自动化处理需求。

DeepSeek结合ArcGIS Pro制作一个批量建库的脚本工具(代码一字未改,直接运行)DeepSpeek!ArcGISPro批量添加字段模板与工具DeepSpeek版https://mp.weixin.qq.com/s/_Lc-8bNb8MzQhMb0h49ILg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS思维

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值