需求:
目的是在指定的GDB数据库中,将要素数据集SourcePolygon下的北京图层中的Layer字段值等于“KZ-控制指标”的记录先导出到新创建的TempPolygon下,导出的图层名为“ControlIndex”,然后再将北京图层中的Layer字段值等于“KZ-控制指标”的记录删除。
示例数据:
链接:https://pan.baidu.com/s/115XtROqpCLkFQ8ZSJ8Nbhg
提取码:4n1i
具体代码:
环境:Python2.x
# -*- coding:utf-8 -*-
import arcpy
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
output_gdb_name = r"D:\test.gdb" # 指定GDB文件
tempDataSet = "TempPolygon"
sqlFilterStr = "Layer='KZ-控制指标'"
arcpy.env.workspace = output_gdb_name
targetFC=""
# 判断指定的数据库是够存在使用的历史图层 ControlIndex,没有则创建,有:
#targetFC =
ifFind =False
datasets = arcpy.ListDatasets(feature_type='feature')
datasets = [''] + datasets if datasets is not None else []
for ds in datasets:
for fc in arcpy.ListFeatureClasses(feature_dataset=ds):
if fc=="北京":
print "true..."
targetFC =fc
ifFind =True
break
if ifFind:break
arcpy.FeatureClassToFeatureClass_conversion(targetFC, output_gdb_name + "\\"+tempDataSet,"ControlIndex",sqlFilterStr) #"Layer='KZ-控制指标'" 可执行
print "指标数据导出已完成...."
# a删除合并数据图层中的指标块数据
with arcpy.da.UpdateCursor(targetFC,"Layer",'"Layer"=\'KZ-控制指标\'') as cursor: # sqlFilterStr
cntr = 0
for row in cursor:
cursor.deleteRow()
cntr +=1
print("原始指标数据删除已完成!共删除记录数:"+str(cntr)+"条。")
打印结果:
D:\app\desktop108\Python27\ArcGIS10.8\python.exe D:/java/***********.py
true...
指标数据导出已完成....
原始指标数据删除已完成!共删除记录数:14条。Process finished with exit code 0