Arcpy按属性(字段值)不同将shp分割为多个独立shp_适用点线面矢量

利用代码可以进行批量处理,安装有10.5及以上版本ArcGIS可以使用工具Split by attributes完成上述任务

# -*- coding: utf-8 -*-
# Import system modules
import re
import arcpy
from arcpy import env

# function for replace special characters
def validateTitle(title):
    rstr = r"[\/\\\:\*\?\"\<\>\|\,\.\ ]"  # '/ \ : * ? " < > | , . '
    new_title = re.sub(rstr, "_", title)  # replace rstr by '_'
    return new_title

# Set workspace
env.workspace = "C:/Users/pan/Desktop/test" # your workspace

# Set local variables
in_features = "C:/Users/pan/Desktop/test/rivers.shp" # replace by your filepath to split

# Open a searchcursor
rows = arcpy.SearchCursor(in_features, fields="NAME") # replace "NAME" by your target field name

# Iterate through the rows in the cursor, select the river by name and export,
for row in rows:
    selected_field_value = row.getValue("NAME")
    where_clause = '"NAME" = \'%s\''%(str(selected_field_value))
    outfilename = validateTitle(str(selected_field_value))
    out_feature_class = "C:/Users/pan/Desktop/test/out/%s.shp"%(outfilename)

    # Execute Select
    arcpy.Select_analysis(in_features, out_feature_class, where_clause)
    print(str(selected_field_value)+' has done!!!')

如果对代码中调用的Arcpy功能API不了解,可以移步ArcGIS帮助

posted @   岁时  阅读(2380)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示