Python(arcpy)批量按属性字段选择,导出成果矢量,附代码


①素材:分县土地利用矢量文件,保存在E:/工作/2024/5月 补录数据/data/sample.gdb文件地理数据库
文件夹示意:


shp文件属性表示意:


目标:将文件数据库中的多个土地利用shp文件,按属性选择每个shp文件中字段“TDLYDM=53”,输出至"C:/Users/Administrator/Desktop/rwtb/"文件夹,命名与原土地利用文件名一致。
③成果示意:

# -*- coding: utf-8 -*-
import arcpy
import os
import sys


arcpy.env.workspace = "E:/工作/2024/5月 补录数据/data/sample.gdb" # Set environment settings,最好在gdb里
output_folder = "C:/Users/Administrator/Desktop/rwtb/"# 输出的shp文件路径文件夹
i = 0
shpList = arcpy.ListFeatureClasses()
for shp in shpList:
    name_total = shp.split("/")[-1]
    name = name_total.split(".")[0]
    arcpy.MakeFeatureLayer_management(shpList[i],"lyr") #创建要素图层
    arcpy.SelectLayerByAttribute_management("lyr", "NEW_SELECTION",  " TDLYDM = 53 ") #“lyr”要素图层;selection_type:选择类型,默认值为"NEW_SELECTION";where_clause 参数指定选择条件,使用的是 SQL 查询语句。
    output_path = os.path.join(output_folder, name)   #输出路径,仍以原土地利用shp文件名命名
    arcpy.CopyFeatures_management("lyr", output_path) #保存选择结果
    arcpy.Delete_management("lyr") #删除已创建的要素图层,避免已创建图层影响下一个shp创建图层
    i = i+1

在ArcGIS Pro中,如果你想要使用arcpy库将Shapefile (shp) 导出到LYR文件(即图层文件),同时保留特定属性对应的图层符号和标注,你可以按照以下步骤操作: 1. 首先,确保你已经安装了ArcPy模块,并且能够正常导入它。如果尚未安装,可以在Python环境中运行`import arcpy`而不报错。 2. 使用`arcpy.da.SearchCursor`读取原始 Shapefile 中的数据,包括你要保存符号和标注的字段信息。例如: ```python # 替换 'your_shapefile.shp' 为你的Shapefile路径 cursor = arcpy.da.SearchCursor("your_shapefile.shp", ["field1", "field2"]) # 根据需要替换字段名 # 创建一个新的LYR文件 lyr_file = "output.lyr" arcpy.CreateFileGDB_management(out_path=".", lyr_file) with arcpy.da.Editor("your_gdb.gdb") as editor: layer_name = "layer_name" # 替换为你的图层名称 new_layer = arcpy.management.MakeFeatureLayer("your_shapefile.shp", layer_name) ``` 3. 为了设置图层符号,你可能需要获取每个几何对象的样式信息并应用到新图层上。这通常涉及到对矢量图层的一些图形属性如颜色、线宽、填充等的操作。具体的API取决于你的需求,可以参考ArcGIS官方文档中关于`arcpy symbology`模块的内容。 4. 对于标注,如果你的Shapefile中有包含文本标签的信息,可以使用类似 `arcpy.FieldMappings` 和 `arcpy.CopyFeatures_management` 来创建新的图层时,关联相关的标注字段。 5. 最后,将图层和它的样式导出到LYR文件: ```python # 创建图层属性表,保存符号和标注信息 attribute_table = arcpy.ListTableFields(new_layer) # 写入LYR文件,包括图层名称、数据源、以及必要的图层属性 with open(lyr_file, "w") as f: f.write(f"[NAME] {layer_name}\n") f.write(f"[EXTENT] -180 -90 180 90\n") # 这里假设是全球范围,根据实际情况修改 for attr in attribute_table: if "SHAPE@" in attr.name or "TEXT" in attr.name: # 检查是否包含几何属性或文本标签 f.write(f"[{attr.name}] {attr.value}\n") # 关闭编辑环境 editor.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值