Py学习  »  Python

Python 自动保存 遍历当前工程中所有地图图层

GISAI • 3 天前 • 19 次点击  
  • 遍历当前工程中所有地图图层

  • 自动找出它们的数据源 GDB(去重)

  • 依次开启编辑会话并保存



import arcpy


# 获取当前工程

aprx = arcpy.mp.ArcGISProject("CURRENT")


# 存储所有唯一的 GDB 路径

gdb_paths = set()


# 遍历所有地图和图层

for m in aprx.listMaps():

    for lyr in m.listLayers():

        if lyr.isFeatureLayer:

            try:

                desc = arcpy.Describe(lyr.dataSource)

                if hasattr(desc, "path") and desc.path.lower().endswith(".gdb"):

                    gdb_paths.add(desc.path)

            except:

                pass


if not gdb_paths:

    print("未找到任何 GDB 数据源,无法保存编辑。")

else:

    print(f"检测到 {len(gdb_paths)} 个 GDB:")

    for gdb in gdb_paths:

        print(f"- {gdb}")


        try:

            # 开启编辑会话

            edit = arcpy.da.Editor(gdb)

            # 假设都是文件 GDB(非版本化),两个参数都 False

            edit.startEditing(False, False)

            edit.startOperation()


            # 不做修改,只为保存已有编辑

            edit.stopOperation()


            # 保存并结束

            edit.stopEditing(True)


            print(f"✅ 已保存 {gdb} 的所有编辑")

        except Exception as e:

            print(f"❌ 保存 {gdb} 失败: {e}")


print("所有工作空间的编辑保存完成。")



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/192539