【ArcMap】导出相同字段属性的路线
比如:导出属性名称都为相同的“路线编”,并存为单个文件夹


代码如下,直接复制粘贴即可:
# -*- coding: utf-8 -*- import arcpy import os import re # ====== 1. 设置参数 ====== # 请把这里改成你的真实路径(不要加 <msg>2 等乱码) output_base_folder = r"C:\Users\Lenovo\Desktop\Route_Export" layer_name = "规划国高" # 图层名 field_name = "路线编" # 字段名 file_prefix = "规划国高" # 文件名前缀 # ====== 2. 准备工作 ====== arcpy.env.overwriteOutput = True if not os.path.exists(output_base_folder): os.makedirs(output_base_folder) # ====== 3. 获取唯一路线编号 ====== print("正在读取路线编号...") unique_routes = [] with arcpy.da.SearchCursor(layer_name, [field_name]) as cursor: for row in cursor: route_code = row[0] if route_code and route_code not in unique_routes: unique_routes.append(route_code) print("共找到 {} 条路线".format(len(unique_routes))) # ====== 4. 批量导出 ====== for route_code in unique_routes: try: # 彻底清除文件名中的非法字符(特别是 < 和 >) safe_name = re.sub(r'[\\/*?:"<>|]', '_', str(route_code).strip()) # 如果清洗后是空字符串,跳过 if not safe_name: continue # 创建该路线的专属文件夹 route_folder = os.path.join(output_base_folder, safe_name) if not os.path.exists(route_folder): os.makedirs(route_folder) # 设置完整输出路径:例如 ...\Route_Export\GXXX\规划国高GXXX.shp out_fc = os.path.join(route_folder, "{} {}.shp".format(file_prefix, safe_name)) # 选中该路线 where_clause = "{} = '{}'".format(field_name, route_code) arcpy.SelectLayerByAttribute_management(layer_name, "NEW_SELECTION", where_clause) # 导出 print("正在导出: {}".format(route_code)) arcpy.CopyFeatures_management(layer_name, out_fc) except Exception as e: print("导出 {} 时出错: {}".format(route_code, e)) arcpy.SelectLayerByAttribute_management(layer_name, "CLEAR_SELECTION") print("== 所有路线导出完成!==")
导出后:


浙公网安备 33010602011771号