python使用arcpy批量裁剪GDB

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()
  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值