【ArcMap】导出相同字段属性的路线

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

image

image

 

 代码如下,直接复制粘贴即可:

# -*- 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("== 所有路线导出完成!==")

导出后:

image

 

image

 

posted @ 2026-05-20 21:02  山鬼谣`  阅读(10)  评论(0)    收藏  举报