ArcGIS使用字段计算器python脚本整理三规合一图斑
来源:互联网 发布:桌面windows手机版 编辑:程序博客网 时间:2024/04/30 05:14
最近试着使用字段计算器内的python脚本整理图斑,蹒跚学步,做下记录。
1.用地代码与名称转换
1.1城规用地代码CGYDDM转用地名称CGYDMC
做一个python字典再索引即可(码齐这些分类还挺累。。)
list = { 'A':'公共管理与公共服务用地','A1':'行政办公用地','A2':'文化设施用地','A21':'图书展览设施用地','A22':'文化活动设施用地','A3':'教育科研用地','A31':'高等院校用地','A32':'中等专业学校用地','A33':'中小学用地','A34':'特殊教育用地','A35':'科研用地','A4':'体育用地','A41':'体育场馆用地','A42':'体育训练用地','A5':'医疗卫生用地','A51':'医院用地','A52':'卫生防疫用地','A53':'特殊医疗用地','A59':'其它医疗卫生用地','A6':'社会福利设施用地','A7':'文物古迹用地','A8':'外事用地','A9':'宗教设施用地','B':'商业服务业设施用地','B1':'商业设施用地','B11':'零售商业用地','B12':'批发市场用地','B13':'餐饮用地','B14':'旅馆用地','B2':'商务设施用地','B21':'金融保险用地','B22':'艺术传媒用地','B29':'其他商务设施用地','B3':'娱乐康体设施用地','B31':'娱乐用地','B32':'康体用地','B4':'公用设施营业网点用地','B41':'加油加气站用地','B49':'其它公用设施营业网点用地','B9':'其它服务设施用地','E':'非建设用地','E1':'水域','E11':'自然水域','E12':'水库','E13':'坑塘沟渠','E2':'农林用地','E9':'其它非建设用地','G':'绿地与广场用地','G1':'公园绿地','G2':'防护绿地','G3':'广场用地','H':'建设用地','H1':'城乡居民点建设用地','H11':'城市建设用地','H12':'镇建设用地','H13':'乡建设用地','H14':'村庄建设用地','H2':'区域交通设施用地','H21':'铁路用地','H22':'公路用地','H23':'港口用地','H24':'机场用地','H25':'管道运输用地','H3':'区域公用设施用地','H4':'特殊用地','H41':'军事用地','H42':'安保用地','H5':'采矿用地','H9':'其它建设用地','M':'工业用地','M1':'一类工业用地','M2':'二类工业用地','M3':'三类工业用地','R1':'一类居住用地','R11':'一类居住用地-住宅用地','R12':'一类居住用地-服务设施用地','R2':'二类居住用地','R21':'二类居住用地-住宅用地','R22':'二类居住用地-服务设施用地','R3':'三类居住用地','R31':'三类居住用地-住宅用地','R32':'三类居住用地-服务设施用地','S':'道路与交通设施用地','S1':'城市道路用地','S2':'城市轨道交通用地','S3':'交通枢纽用地','S4':'交通站场用地','S41':'公共交通站场用地','S42':'社会停车场用地','S9':'其它交通设施用地','U':'公用设施用地','U1':'供应设施用地','U11':'供水用地','U12':'供电用地','U13':'供燃气用地','U14':'供热用地','U15':'通信设施用地','U16':'广播电视设施用地','U2':'环境设施用地','U21':'排水设施用地','U22':'环卫设施用地','U23':'环保设施用地','U3':'安全设施用地','U31':'消防设施用地','U32':'防洪设施用地','U9':'其它公用设施用地','W':'物流仓储用地','W1':'一类物流仓储用地','W2':'二类物流仓储用地','W3':'三类物流仓储用地',}
再给CGYDMC字段赋值
list.get( !CGYDDM! )
1.2 土规用地代码TGYDDM转用地名称TGYDMC
list = { '1110':'水田','1120':'水浇地','1130':'旱地','1310':'有林地','1320':'灌木林','1330':'其它林地','1410':'天然牧草地','1420':'人工牧草地','1510':'设施农用地','1520':'农村道路','1530':'坑塘水面','1540':'农田水利用地','1550':'田坎','2110':'城镇用地','2120':'农村居民点用地','2130':'采矿用地','2140':'其它独立建设用地','2210':'铁路用地','2220':'公路用地','2230':'民用机场用地','2240':'港口码头用地','2250':'管道运输用地','2260':'水库水面','2270':'水工建筑用地','2310':'风景名胜设施用地','2320':'特殊用地','2330':'盐田','3110':'河流水面','3120':'湖泊水面','3130':'滩涂','3210':'荒草地','3220':'盐碱地','3230':'沙地','3240':'裸地','3250':'其它未利用土地','1100':'耕地','1200':'园地','1300':'林地','1400':'牧草地','1500':'其它农用地','2100':'城乡建设用地','2200':'交通水利用地','2300':'其他建设用地','3100':'水域','3200':'自然保留地','1000':'农用地','2000':'建设用地','3000':'其它土地'}
2.衔接地类代码整理
城规
cx = ['H11', 'H14', 'H5']fc = ['H2', 'H4', 'H9']fJ = ['E1', 'E2', 'E9']def CGXJDLDM(CG): if CG in cx: return 'cx' elif CG in fc: return 'fc' else: return 'fJ'
赋值:
CGXJDLDM(!CGDLDM!)
3.1 三规合一之城规CG与土规TG建设用地差异CYFQMC
定义一个函数,然后用条件语句分类
因为两规的规划范围不一致,导致两规的衔接地类代码中均出现空值‘’,可归为非建fJ。(正确流程还是先统一两规边界再做后续分析,故fJ不需再包含空值)
J = ['cx', 'fc']fJ = ['fJ','']def CYFX(CG,TG): if TG in J and CG in fJ: return "土规建设用地,城规非建设用地" elif CG in J and TG in fJ: return "土规非建设用地,城规建设用地" elif CG in J and TG in J: return "城乡规划和土地利用总体规划均为建设用地" else: return "城乡规划和土地利用总体规划均为非建设用地"
下方字段赋值
CYFQMC=CYFX( !CGXJDLDM!, !TGXJDLDM!)
3.2三规合一之现状XZ与土规TG建设用地差异CYFQMC
需要注意的问题是,ArcGIS10.2.2如果字段使用了中文的字符,python条件语句会执行出错,纠结好久才发现这个问题所在。
被迫把国土已批GTYP和复垦用地FKYD字段改为短整给值1。
J = ['cx', 'fc']fJ = ['fJ', '']def CYFX(XZ,TG,GTYP,FKYD): if TG in J and XZ in fJ: if GTYP == 1: return "土规为建设用地,现状为非建设用地,已批未建" else: return "土规为建设用地,现状为非建设用地,未批未建" elif TG in fJ and XZ in J: if FKYD == 1: return "土规为非建设用地,现状为建设用地,复垦用地" elif GTYP == 1: return "土规为非建设用地,现状为建设用地,非复垦用地,已批已建" else: return "土规为非建设用地,现状为建设用地,非复垦用地,未批已建" elif XZ in J and TG in fJ: return "土规与现状均为建设用地" else: return "土规与现状均为非建设用地"
赋值:
CYFX( !XZXJDLDM!, !TGXJDLDM!, !GTYP!, !FKYD!)
3.3三规合一之现状XZ与城规CG建设用地差异CYFQMC
J = ['cx', 'fc']fJ = ['fJ', '']def CYFX(XZ,CG,GHYP): if CG in J and XZ in fJ: if GHYP == 1: return "城规为建设用地,现状为非建设用地,已批未建" else: return "城规为建设用地,现状为非建设用地,未批未建" elif XZ in J and CG in fJ: if GHYP == 1: return "城规为非建设用地,现状为建设用地,已批已建" else: return "城规为非建设用地,现状为建设用地,未批已建" elif XZ in J and CG in J: return "城规与现状均为建设用地" else: return "城规与现状均为非建设用地"
4.字符串操作
4.1地块编号
如按镇区首字母大写加5位数字:HP00001,后面的ID可以用自动生成的ObjectID或者重新生成一个
ID=0def newID(): global ID ID+=1 return IDnewID()
接下来是字符串的对齐操作,左对齐5位,补充0,再添加打头字母即可。
'HP'+'{:0>5}'.format('ID')
5.ArcGIS中python的中文支持问题
查了不少地方,最终解决方案为中文字符串后加 .decode('utf-8'),如:
'建设用地区'.decode('utf-8')
补充点题外的:忽然发现字段查询器那里SQL语句,可以使用例如 CGYDDM NOT IN ( '' , 'E1' , 'E2' , 'FZBYD', 'H2' ) 的方式完成多个条件的简化,看来SQL语法还是要单独去学学。
0 0
- ArcGIS使用字段计算器python脚本整理三规合一图斑
- ArcGIS教程:图斑整理之字段计算器使用技巧
- ArcGIS使用python进行三规合一用地调整
- 在ArcGIS字段计算器中使用Python脚本将Text类型转换成整型
- arcgis 字段计算器 python方法
- ArcGIS字段计算器中的python函数
- ArcGIS字段计算器Python变量类型
- ArcGIS Python脚本使用
- ArcGIS 字段计算器
- arcgis字段计算器实例
- ArcGIS使用Python脚本工具
- "三规合一"学习
- ArcMap中使用属性字段计算器去除XX市(XX县)的Python脚本
- 基于Python脚本的ArcMap字段计算器分类赋值
- ArcGIS字段计算器分割字段中的字符串
- 使用Highcharts实现柱状图、饼状图、曲线图三图合一
- ArcGIS字段计算器(Python篇) —— 群内问题汇总
- 字段计算器通过python脚本完成要素节点坐标信息提取到属性字段中
- 从头认识java-1.4 复用代码
- ibatis插入数据到MySQL
- apache kafka监控系列-KafkaOffsetMonitor
- Android Studio代码着色插件
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- ArcGIS使用字段计算器python脚本整理三规合一图斑
- codeforces 376C Divisible by Seven(能被7整除的数)
- Ubuntu 下修改文件拥有者
- 黑马程序员 ——ios基础 ——#include文件搜索顺序、数组
- 信息学奥林匹克竞赛-Pascal过程与函数
- waveOutGetNumDevs枚举设备
- 结构体对齐
- EXT2文件系统
- 个人阅读的Deep Learning方向的paper整理