Arcgis如何使用三调数据统计土地三大类

目录

Arcgis如何使用三调数据统计土地三大类

背景

三调数据具有多种用途,国土空间规划需要以三调数据为基础来编制。按照我国《土地管理法》,土地按用途被分为三大类,即农用地、建设用地、未利用地。如何实现三调数据向三大类转换,是分析土地利用变化时不可或缺的一部分。

本文阐述如何用ARCGIS实现三调数据向三大类转换。

基础数据

基础数据为三调数据中的【DLTB】图层,

名称格式坐标系说明
DLTBShapefile未知用于提取三大类数据

解决方法

  1. 使用【添加字段】工具,创建新字段用于存储三大类。
  2. 使用【字段计算器】工具,设置计算条件,对字段赋值。
工具名称工具位置
添加字段【属性表】→【表选项】→【添加字段】
字段计算器【右键菜单】→【字段计算器】

操作步骤

1.新建分类字段
如图所示,打开DLTB图层属性表,添加文本型字段“三大类”。
《Arcgis如何使用三调数据统计土地三大类》
2. 对字段进行赋值
右击三大类字段,打开【字段计算器】对话框,【解析程序】选择“Python”,勾选【显示代码块】;本例按照《第三次全国土地调查工作分类与三大类对照表》中的三调分类与三大类对应规则进行分类,判断代码如下所示:

// 创建函数getClassify
def getClassify(dlbm):
    nyd=['0101','0102','0103','0201','0202','0203','0204','0301','0302','0303','0304','0305','0306','0307','0401','0402','0403','1006','1103','1104','1107','1202','1203','1104A']
    wlyd=['0404','1101','1102','1105','1106','1108','1110','1204','1205','1206','1207']
    if dlbm in nyd:
        return "农用地"
    elif dlbm in wlyd:
        return "未利用地"
    else:
        return "建设用地"

复制全部代码粘贴至【预逻辑脚本代码窗口中】,然后引用该函数,引用方法为:设置【三大类=】“getClassify(!DLBM!)”,!DLBM!为原属性表的DLBM字段。
《Arcgis如何使用三调数据统计土地三大类》
点击【确定】,得到赋值完成的“三大类”,赋值结果如下所示:
《Arcgis如何使用三调数据统计土地三大类》

注:
Python有着严格的代码缩进规则,请严格进行代码的复制粘贴,否则会发生错误,无法生成赋值结果。
请检查对应规则是否更新,如果更新,请参照新规则进行代码修改后再赋值。

以下为建设用地的代码,需要自取:

 jsyd=['05H1','0501','0502','0503','0504','0505','0506','0507','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0901','0902','0903','0904','0905','0906','1001','1002','1003','1004','1005','1007','1008','1009','1109','1201','09','0810A','06H1']

2020/12/11
我对代码做了改进,可以直接将未归类的代码输出为“请查询:DLBM”,避免了这部分代码直接返回到建设用地中,以下为改进后的代码:

def getClassify(dlbm):
   nyd=['0101','0102','0103','0201','0202','0203','0204','0301','0302','0303','0304','0305','0306','0307','0401','0402','0403','1006','1103','1104','1107','1202','1203','1104A']
   wlyd=['0404','1101','1102','1105','1106','1108','1110','1204','1205','1206','1207']
   jsyd=['05H1','0501','0502','0503','0504','0505','0506','0507','0508','0601','0602','0603','0701','0702','08H1','08H2','08H2A','0809','0810','0901','0902','0903','0904','0905','0906','1001','1002','1003','1004','1005','1007','1008','1009','1109','1201','09','0810A','06H1']
   if dlbm in nyd:
       return "农用地"
   elif dlbm in wlyd:
       return "未利用地"
   elif dlbm in jsyd:
       return "建设用地"
   else:
        return "请查询:{0}".format(dlbm)
    原文作者:亲爱的远月
    原文地址: https://blog.csdn.net/weixin_47489319/article/details/110225509
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞