1.读取裁剪面shp
# 读取裁切面shp,并获取要素几何形状
shapefile_path = r"C:\裁切面shp路径.shp"
# 定义字段列表,你想要从 shapefile 中读取的字段
fields = ["SHAPE@", "NAME"] # 注意 "SHAPE@" 是用来访问几何形状的
# 使用 arcpy.da.SearchCursor 来读取数据
with arcpy.da.SearchCursor(shapefile_path, fields) as cursor:
for row in cursor:
# row[0] 是几何形状(面),row[1:] 是其他字段的值
shape = row[0]
name = row[1]
print("---------------{}-----------------".format(name))
"读取GDB数据,裁剪代码逻辑......"
"最后附完整代码"
2.读取源数据GDB
# 数据源GDB
gdb_rescource = r'C:\数据源GDB路径.gdb'
# 设置工作空间
arcpy.env.workspace = gdb_rescource
datasets = arcpy.ListDatasets()
featureClasses = arcpy.ListFeatureClasses()
for dataset in datasets:
print("数据集:"+dataset)
# 读取数据源数据集中的要素类
feature_classes = arcpy.ListFeatureClasses("","",dataset)
for fc in feature_classes:
print("数据集要素类:"+fc)
"裁剪代码逻辑......"
"最后附完整代码"
for featureClass in featureClasses:
print("要素类"+featureClass)
"裁剪代码逻辑......"
"最后附完整代码"
3.创建输出GDB文件
'''
根据裁剪的实际情况动态创建gdb
workspace_folder:输出文件夹
gdb_name = "GDB名称"
'''
def createGdb(workspace_folder,gdb_name):
gdb_path = arcpy.os.path.join(workspace_folder, gdb_name)
# 检查GDB是否已经存在
if arcpy.Exists(gdb_path):
print("GDB already exists.")
else:
# 创建GDB
arcpy.CreateFileGDB_management(workspace_folder, gdb_name)
print("GDB created successfully.")
return gdb_path
4.使用arcpy批量裁剪GDB完整代码
# coding=utf-8
import arcpy
import sys
import os
reload(sys)
sys.setdefaultencoding("utf-8")
def read_gdb(output_path,clip,gdbname):
out_workspace_gdb = createGdb(output_path,"{}.gdb".format(gdbname))
datasets = arcpy.ListDatasets()
featureClasses = arcpy.ListFeatureClasses()
for dataset in datasets:
print("数据集:"+dataset)
# 创建数据集
if arcpy.Exists(arcpy.os.path.join(out_workspace_gdb, dataset)):
print("database already exists.")
else:
arcpy.CreateFeatureDataset_management(out_workspace_gdb, dataset, arcpy.SpatialReference(4326))
print("database created successfully.")
# 读取数据源数据集中的要素类
feature_classes = arcpy.ListFeatureClasses("","",dataset)
for fc in feature_classes:
output = os.path.join(out_workspace_gdb,dataset,fc)
arcpy.Clip_analysis(fc,clip,output)
print(">>>clip successfully>>>")
for featureClass in featureClasses:
print("要素类"+featureClass)
output = os.path.join(out_workspace_gdb, featureClass)
arcpy.Clip_analysis(featureClass, clip, output)
print(">>>clip successfully>>>")
'''
创建gdb
# 设置工作空间(假设这是你的GDB将要创建的位置)
workspace_folder:输出文件夹
gdb_name = "my_geodatabase3252525.gdb"
'''
def createGdb(workspace_folder,gdb_name):
gdb_path = arcpy.os.path.join(workspace_folder, gdb_name)
# 检查GDB是否已经存在
if arcpy.Exists(gdb_path):
print("GDB already exists.")
else:
# 创建GDB
arcpy.CreateFileGDB_management(workspace_folder, gdb_name)
print("GDB created successfully.")
return gdb_path
def getClipShp():
# 数据源GDB
gdb_rescource = r'C:\Users\数据源GDB路径.gdb'
# 设置工作空间
arcpy.env.workspace = gdb_rescource
# 裁切后的GDB输出目录
output_path = r"C:\Users\output"
# 裁切面shp
shapefile_path = r"C:\Users\裁切面shp路径.shp"
# 定义字段列表,你想要从 shapefile 中读取的字段
fields = ["SHAPE@", "NAME"] # 注意 "SHAPE@" 是用来访问几何形状的
# 使用 arcpy.da.SearchCursor 来读取数据
with arcpy.da.SearchCursor(shapefile_path, fields) as cursor:
for row in cursor:
# row[0] 是几何形状(面),row[1:] 是其他字段的值
shape = row[0]
name = row[1]
print("---------------{}-----------------".format(name))
# 读取GDB并裁剪生成新的GDB
read_gdb(output_path,shape,name)
# 按间距中的绿色按钮以运行脚本。
if __name__ == '__main__':
getClipShp()