【办公自动化】国土“三调”用地分类“一键”转国标分类

推送了《【办公自动化】国土“三调”用地分类“一键”转南京分类》文章,就有同学提出之前是地方标准需要国标的用地类别,答说国标中自带转换对照表,同学说表太长还得改代码,需要一键转换,今天“一键”生成转换国标用地标准来了。

1、用地差异说明

同样的依据第三次全国国土调查工作分类,“三调”将用地分类为12个一级地类与73个二级地类。
国标中(《市县国土空间规划基本分类与用途分类指南》(试行,征求意见稿))分为28个一级地类,102个二级地类,39个三级地类。我们以国标附件中的转换表为准。
转换表非常详细,省略N行之后如下:
在这里插入图片描述
而《南京市村庄规划编制技术指南》(试行)(2020版)分为25个一级地类,71个二级地类,35个三级地类。
看一下他们的不同(不同部分刷红):
在这里插入图片描述

2、一键生成代码

这么一来需要调整的代码非常多,我们同样采用代码生成代码的方式一键搞定。Python代码很简单,有Python环境的同学可以自己运行:

import pandas as pd
url = "sandiao-gb.xlsx" #excel地址
#读取EXCEL对照表
df = pd.read_excel(url,dtype='object')  #强制object这样所有的数据成了字符串

#生成定义函数,转换带K类用地,用\n换行,这里注意换行后的python对其格式
cord = 'def plan_name(name): \n    if \'K\' in name:\n        name = name[:-1]\n' 

#循环生成判断代码
for i in range(df.shape[0]):
    name = df.iloc[i,2]+df.iloc[i,3]
    if i  == 0 :
        cord = cord + '    if name == \'%s\' : \n        return \'%s\' \n' %(df.iloc[i,0], name)
    else:
        cord = cord + '    elif name == \'%s\' : \n        return \'%s\' \n' %(df.iloc[i,0], name)
        
#生成代码结尾,没有else结尾gis中会报错        
cord = cord  +'    else:\n        return \'check\' \n'

print(cord)

一键自动生成的代码如下:

def plan_name(name): 
    if 'K' in name:   #有特殊带K的用地,去除K
        name = name[:-1]
    #以编码进行匹配,排除可调用地等不同命名用地。
    if name == '0303' : 
        return '1801红树林地' 
    elif name == '0304' : 
        return '1802沼泽' 
    elif name == '0306' : 
        return '1802沼泽' 
    elif name == '0402' : 
        return '1802沼泽' 
    elif name == '0603' : 
        return '1702盐田' 
    elif name == '1105' : 
        return '1803滩涂' 
    elif name == '1106' : 
        return '1803滩涂' 
    elif name == '1108' : 
        return '1802沼泽' 
    elif name == '0101' : 
        return '01耕地' 
    elif name == '0102' : 
        return '01耕地' 
    elif name == '0103' : 
        return '01耕地' 
    elif name == '0201' : 
        return '02园地' 
    elif name == '0202' : 
        return '02种植园地' 
    elif name == '0203' : 
        return '02种植园地' 
    elif name == '0204' : 
        return '02种植园地' 
    elif name == '0301' : 
        return '03林地' 
    elif name == '0302' : 
        return '03林地' 
    elif name == '0305' : 
        return '03林地' 
    elif name == '0307' : 
        return '03林地' 
    elif name == '0401' : 
        return '0401天然牧草地' 
    elif name == '0403' : 
        return '0402人工牧草地' 
    elif name == '0404' : 
        return '1905其他草地' 
    elif name == '05H1' : 
        return '08商服用地' 
  #此处删除N行,太长了  
  
    elif name == '1301' : 
        return '14留白用地' 
    else:
        return 'check'
       #如果出现check图层,请检查,用地代码不在对照表内  

3、一键转换

最后打开GIS,打开属性表,添加字段layer,类型文本;
打开 字段计算器…选Python,勾选显示代码块
在其中粘贴脚本代码,在Layer= 下面填入 plan_name(!DLBM!) 调用函数;
点保存就生成了cal文件,以后可以加载使用一键转换; 点确定就生成了转换后的Layer数据。

在这里插入图片描述
若需要CAD文件,自行导出CAD,CAD中就形成了国土空间规划的用地图层。

8月12日最新发布GIS转换工具箱,转换文件已停止更新
对原转换文件感兴趣的同学可以点击下方网盘链接
链接:https://pan.baidu.com/s/1fIaDrvwfElGWeqtqwAyZWg
提取码:0817

在这里插入图片描述
关注规划酱,一起高效率!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划酱

谢谢鼓励!一起自动化!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值