Arcpy案例:根据属性字段拆分数据

需求描述:

一个矢量数据含有多个字段,按其中一个字段将数据划分为多个矢量数据,这里按xname字段值进行划分:

 代码主要分为两部分:1、遍历字段值         2、根据字段值进行划分

涉及的方法有Arcpy中da模块的SearchCursor方法来查看属性表,以及Select_analysis筛选方法

(1)设置输入要素、输出路径、拆分字段:

in_feature = "E:/ArcGIS/TCM/datas/hege2/jisuan/hebing2.shp"  # 拆分要素
out_folderpath = "E:/ArcGIS/TCM/datas/class/"   # 输出路径
split_field= "xname"  # 拆分标准字段

其中输出路径以“/”结尾,为了与字段名拼接出输出文件路径。

(2)用with语句进行编写:

field_data_list =[]
with arcpy.da.SearchCursor(in_feature,split_field) as cursor:
    count = 0
    for row in cursor:
        if row[0] not in field_data_list:
            field_data_list.append(row[0])
    for select_data in field_data_list:
        count += 1
        arcpy.Select_analysis(in_feature, out_folderpath + select_data + '.shp',
                              split_field + "=" + "'" + select_data + "'")
    print count
该部分包含两个循环,首先遍历矢量要素,用field_data_list变量用来存储遍历的结果,即该数据中xname字段究竟有多少个值。再对结果进行筛选,筛选出条件满足split_field + "=" + "'" + select_data + "'"的结果,单独输出shp文件。count可以查看总要素个数。

完整代码如下:

# coding=utf-8
import arcpy

in_feature = "E:/ArcGIS/TCM/datas/hege2/jisuan/hebing2.shp"  # 拆分要素
out_folderpath = "E:/ArcGIS/TCM/datas/class/"   # 输出路径

split_field= "xname"  # 拆分标准字段
field_data_list =[]
with arcpy.da.SearchCursor(in_feature,split_field) as cursor:
    count = 0
    for row in cursor:
        if row[0] not in field_data_list:
            field_data_list.append(row[0])
    for select_data in field_data_list:
        count += 1
        arcpy.Select_analysis(in_feature, out_folderpath + select_data + '.shp',
                              split_field + "=" + "'" + select_data + "'")
    print count

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值