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帮助