最近,国土空间规划体系下“多规合一”的实用性村庄规划大面积展开,“三调”数据拿到手直接就面临转换现状用地的问题,今天我们来聊聊通过代码“一键”转换的办法。
1、用地标准说明
依据第三次全国国土调查工作分类,“三调”将用地分类为12个一级地类与73个二级地类。
依据《市县国土空间规划基本分类与用途分类指南》(试行,征求意见稿)国土空间规划则分为28个一级地类,102个二级地类,39个三级地类。
2020年3月的《南京市村庄规划编制技术指南》(试行)(2020版)依据自然资源部《市县国土空间规划基本分区与用途分类指南(试行,送审稿)》中国土空间用途分类,根据实际常用情况,对部分地类作了细化。分为25个一级地类,71个二级地类,38个三级地类。
本次转换标准暂以《南京市村庄规划编制技术指南》(试行)(2020版)为准。 如有变更将及时更新
2、用地转换说明
用地转换基于《市县国土空间规划基本分区与用途分类指南(试行,送审稿)》中附件国土空间规划用途分类说明,第3与“三调”工作对接,所列的分类对接情况表。具体分为四种类型分别说明:
一一对应型: 一个“三调”用地的二级地类可以与国土空间规划用地的有明确的对应关系的,可以直接转换。
一对多型: 一个“三调”用地的的二级地类可转换成多个国土空间规划的类别,为保证转换效率,将转换为最常见一级地类,具体划分需根据现状调研情况进行手动调整。如08H2科教文卫用地,可转换为0702文化用地、0703教育用地、0704体育用地、0705医疗卫生用地、0706社会福利用地、0707科研用地多个,我们统一转换为一级地类07公共设施用地。
多对一型: 多个“三调”用地的二级地类可转换成一个国土空间规划的类别,可直接转换。如0101水田、0102水浇地、0103旱地,均为转换成01耕地。
无对应型: “三调”中空闲地无对应类型,需根据现状调研情况手动调整,默认转换为00空闲地
详见用地对照表:
3、操作说明
GIS中,打开属性表,添加字段layer,类型文本;
拉到最后,右击Layer图层打开字段计算器…,加载表达式cal文件(后文获取),切记加载后需点选上面的Python,然后点确定,就自动转换生成了Layer的数据。
导出CAD,CAD中就形成了国土空间规划的用地图层。
4、生成代码
由于代码很长,所以特地提供代码生成代码,这样可以直接去GIS中粘贴代码
import pandas as pd
url = "sandiao-gb.xlsx" #你的excel地址
#读取EXCEL对照表
df = pd.read_excel(url,dtype='object') #强制object这样所有的数据成了字符串
#生成定义函数,转换带K类用地,用\n换行,这里注意换行后的格式
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)
生成的Python代码如下,可以直接使用,代码生成代码非常方便!
def plan_name(name):
if 'K' in name: #有特殊带K的用地,去除K
name = name[:-1]
#以编码进行匹配,排除可调用地等不同命名用地。
if name == '0303' :
return '1701红树林地'
elif name == '0304' :
return '1702沼泽'
elif name == '0306' :
return '1702沼泽'
elif name == '0402' :
return '1702沼泽'
elif name == '0603' :
return '1602盐田'
elif name == '1105' :
return '170301沿海滩涂'
elif name == '1106' :
return '170302内陆滩涂'
elif name == '1108' :
return '1702沼泽'
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 '04牧草地'
elif name == '0403' :
return '04牧草地'
elif name == '0404' :
return '1805其他草地'
elif name == '05H1' :
return '0708商服用地'
elif name == '0508' :
return '09仓储用地'
elif name == '0601' :
return '08工业用地'
elif name == '0602' :
return '1601采矿用地'
elif name == '0603' :
return '1602盐田'
#此处省略若干代码,太长了
else:
return 'check'
#如果出现check图层,请检查,用地代码不在对照表内
8月12日最新发布GIS转换工具箱,转换文件已停止更新
对原转换文件感兴趣的同学可以点击下方网盘链接
链接:https://pan.baidu.com/s/1fIaDrvwfElGWeqtqwAyZWg
提取码:0817
需要用地转换对照Excel表的同学,关注公众号,回复“对照表”,自动发送链接
关注规划酱,一起高效率!