要利用 arcpy 将多个要素按照全国各省边界裁剪,并按省份存储到不同的文件夹中 | 您所在的位置:网站首页 › arcgis导入shp文件看不到 › 要利用 arcpy 将多个要素按照全国各省边界裁剪,并按省份存储到不同的文件夹中 |
1. 首先使用 ArcGIS 等软件工具导入全国的省份边界数据(例如:province.shp),该数据属于矢量格式。然后选择需要进行裁剪的多个要素图层。 2. 新建一个“Provinces”文件夹,在其中创建子文件夹以形成一组与将要提取的要素相对应的省份文件夹。每个子文件夹都应该以省份名字命名,例如:“Fujian”、“Gansu”和“Hebei”等。 3. 利用 arcpy 执行循环遍历操作,依次将要素数据在各个省份的掩蔽边界内进行裁剪,并将每个裁剪过程的结果存储到相应的省份文件夹中: import arcpy # Set input and output file paths in_features = ["D:/path/to/input/feature1.shp", "D:/path/to/input/feature2.shp", "D:/path/to/input/feature3.shp"] out_folder = "D:/path/to/output/Provinces" mask_feature = "D:/path/to/mask/province.shp" # Loop through each province and extract the input features with arcpy.da.SearchCursor(mask_feature, ["OID@", "NAME"]) as cursor: for row in cursor: province_id = row[0] province_name = row[1] # Create a folder for the current province province_folder = out_folder + "\\" + province_name if not arcpy.Exists(province_folder): arcpy.CreateFolder_management(out_folder, province_name) # Create a feature class to store the mask polygon for the current province mask_fc = arcpy.CopyFeatures_management(mask_feature, arcpy.Geometry())[0] province_query = "\"{0}\" = {1}".format(arcpy.AddFieldDelimiters(mask_feature, "OID@"), province_id) arcpy.SelectLayerByAttribute_management(mask_fc, "", province_query) # Loop through each input feature and extract it using the mask for in_feature in in_features: out_feature = province_folder + "\\" + arcpy.Describe(in_feature).name arcpy.Select_analysis(in_feature, out_feature, mask_fc) ``` 这段代码将要素图层列表 `in_features` 裁剪到各个省份的边界所定义的掩蔽区域内。`mask_feature` 定义全国省份边界数据,使用一个游标来循环处理每个省份。在循环中,确定当前省份的名称及其存储文件夹位置,并为省份创建输出目录和裁剪的结果feature class,最后将裁剪过程得出的新feature class存储到对应的省份文件夹中。 4. 执行完以上程序后,即可得到所有的裁剪结果并分别按照省份存储到了对应的文件夹下。 注意:第3步中,需要提前准备好全国省份边界数据(即掩蔽区域),并将其存储为矢量文件(shapefile或feature class)。需要确保全国边界矢量数据范围和输入要素图层的范围相互重叠。此外,在进行循环遍历操作之前,建议认真检查输入要素图层是否准确,并在执行程序时注意计算资源和性能限制等问题。 |
CopyRight 2018-2019 实验室设备网 版权所有 |