以下是一个 Python 脚本,使用 ArcPy 将某个要素类根据字段值拆分成多个要素类,并分别存储到新的 GDB 中:
脚本说明
读取输入的 GDB 和要素类。
根据指定字段的唯一值对要素类进行拆分。
为每个唯一值创建一个新的 GDB,并将对应的子集数据导入到新 GDB 中。
示例代码
python
复制代码
import arcpy
import os
# 输入参数
input_gdb = r"C:\path\to\input.gdb" # 输入 GDB 路径
input_feature_class = "YourFeatureClass" # 要素类名称
split_field = "YourFieldName" # 根据此字段分组
output_folder = r"C:\path\to\output_folder" # 输出 GDB 存放的文件夹
# 设置环境
arcpy.env.workspace = input_gdb
# 获取字段唯一值
unique_values = set(row[0] for row in arcpy.da.SearchCursor(input_feature_class, [split_field]))
print(f"找到唯一值: {unique_values}")
# 遍历唯一值,创建新 GDB 并导出对应数据
for value in unique_values:
# 定义输出 GDB 名称
gdb_name = f"{value}.gdb"
output_gdb_path = os.path.join(output_folder, gdb_name)
# 创建新 GDB
if not arcpy.Exists(output_gdb_path):
arcpy.CreateFileGDB_management(output_folder, gdb_name)
print(f"创建 GDB: {output_gdb_path}")
# 定义输出要素类路径
output_feature_class = os.path.join(output_gdb_path, input_feature_class)
# 构建 SQL 查询表达式
query = f"{split_field} = '{value}'" if isinstance(value, str) else f"{split_field} = {value}"
# 使用 Select 来导出对应的子集数据
arcpy.Select_analysis(
in_features=input_feature_class,
out_feature_class=output_feature_class,
where_clause=query
)
print(f"导出: {value} 到 {output_feature_class}")
print("拆分完成!")
代码说明
输入参数:
input_gdb
: 输入 GDB 的路径。input_feature_class
: 要处理的要素类名称。split_field
: 用于拆分的字段名称。output_folder
: 用于存储生成的 GDB 的文件夹路径。
逻辑流程:
创建对应的文件 GDB。
使用
Select
工具将符合条件的数据导出到新 GDB 中。
使用
SearchCursor
获取字段的唯一值。遍历唯一值:
SQL 表达式:
根据字段类型(字符串或数值)动态生成 SQL 表达式。
检查是否已存在 GDB:
如果目标 GDB 已存在,跳过创建步骤。
注意事项
路径管理: 确保输入 GDB 和输出文件夹路径正确。
字段类型: 如果字段包含特殊字符(如空格),需在字段名称加双引号或方括号。
唯一值数量: 如果唯一值数量过多,生成的 GDB 会很多,注意存储空间。
如果需要进一步定制或优化,请告知您的具体需求!