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 @ 2020-08-24 20:26  岁时  阅读(2142)  评论(0编辑  收藏  举报