当前位置: 首页 > article >正文

【ArcGIS技巧】—村庄规划规划用地规划状态字段生成工具

"国土空间规划后续也是走向数据治理,数据建库已经是涉及到城市规划、建筑、市政、农业、地理信息、测绘等等方方面面。不得不说以后数据库建设跟维护,是很多专业的必修课。小编就湖南省的村庄规划建库过程中规划用地用海中规划状态字段写了个小工具,觉得有用的可以下载试试。"

1、数据准备

首先得有现状地类图斑、规划地类图斑两个要素图层,湖南省的村庄规划,这两个图层就是表达现状用地、规划用地。具体的地类图例对应的字段YJDLMC(规划一级地类)。

打开工具箱下面—规划状态字段确定脚本,输入规划地类图斑与现状地类图斑两个参数,确定运行工具即可。

完成后会生成GHZT字段(没有会新建),字段会根据规划地类图斑的YJDLMC字段是否变化做出判断,“10”为现状,“20”为规划。

2、脚本代码

具体代码:

# -*- coding:utf-8 -*-
'''
判断规划用地与现状用地的区别,从而填写规划状态,与现状用地在地类与面积都一致,规划状态为“现状”:“10”,“规划”填“20”,“在(待)建”填“30”,“其他”填“90”。
'''
import sys
import arcpy
import os
reload(sys)
sys.setdefaultencoding('utf-8')# 设置工作空间
arcpy.env.workspace="in_memory" # 可以使用内存工作空间提高性能
arcpy.env.overwriteOutput=True# 输入参数
gh_tb=arcpy.GetParameterAsText(0) #规划图斑
xz_tb=arcpy.GetParameterAsText(1) #现状图斑
yjdlmc_field="YJDLMC" #一级地类名称字段
ghzt_field="GHZT" #要添加的规划状态字段try:# 检查规划图斑中是否已存在GHZT字符安,不存在则添加fields=arcpy.ListFields(gh_tb)has_ghzt=Falsefor field in fields:if field.name==ghzt_field:has_ghzt=Truebreakif not has_ghzt:arcpy.AddField_management(gh_tb,ghzt_field,"TEXT",field_length=255)# 创建空间连接临时图层,找出规划图斑与现状图斑相交的部分temp_fc="in_memory/temp_identity"arcpy.Identity_analysis(gh_tb,xz_tb,temp_fc,join_attributes="ALL")# 创建字典存储每个规划图斑的FID及其对应的YJDLMC是否变化change_dict={}gh_oid_field=None #标识结果中规划图斑的原始ID字段for field in arcpy.ListFields(temp_fc):if field.name.startswith("FID_"):gh_oid_field=field.namebreak# 使用游标遍历空间连接结果with arcpy.da.SearchCursor(temp_fc,[gh_oid_field,"YJDLMC",yjdlmc_field+"_1"]) as cursor:for row in cursor:gh_fid=row[0]gh_yjdlmc=row[1]xz_yjdlmc=row[2]# 初始化字典条目if gh_fid not in change_dict:change_dict[gh_fid]="10"# 检查是否发生变化(包含空值判断)if xz_yjdlmc is None or gh_yjdlmc!=xz_yjdlmc:change_dict[gh_fid] = "20"# 更新规划图斑的GHZT字段with arcpy.da.UpdateCursor(gh_tb,["OID@",ghzt_field]) as cursor:for row in cursor:fid = row[0]if fid in change_dict:row[1]=str(change_dict[fid])else:row[1]="10"cursor.updateRow(row)# 清理临时数据arcpy.Delete_management("in_memory")arcpy.AddMessage("finish")
except arcpy.ExecuteError:print(arcpy.GetMessages(2))
except Exception as e:arcpy.AddMessage("出现未知错误:%s" % str(e))

3、视频演示

规划状态字段生成工具

http://www.lryc.cn/news/2405109.html

相关文章:

  • React从基础入门到高级实战:React 实战项目 - 项目三:实时聊天应用
  • Go语言中的if else控制语句
  • 【PCIe总线】-- inbound、outbound配置
  • 分布式锁实战:Redisson vs. Redis 原生指令的性能对比
  • MyBatis中foreach集合用法详解
  • react+taro 开发第五个小程序,解决拼音的学习
  • 高防IP可以防护什么攻击类型?企业网络安全的第一道防线
  • Wireshark使用教程(含安装包和安装教程)
  • Asp.Net Core基于StackExchange Redis 缓存
  • 【Linux】SSH:免密登录
  • kafka(windows)
  • 深度学习习题3
  • 勒让德多项式
  • atc abc409E
  • Mysql批处理写入数据库
  • 基于安卓的文件管理器程序开发研究源码数据库文档
  • EMC VNXe 存储系统日志收集方法
  • 嵌入式链表操作原理详解
  • 从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态
  • 一.设计模式的基本概念
  • 以人类演示视频为提示,学习可泛化的机器人策略
  • split方法
  • SOC-ESP32S3部分:36-适配自己的板卡
  • LLMs 系列科普文(8)
  • 【明日方舟 × 红黑树】干员调度如何不掉线?算法工程的平衡魔法全揭秘!
  • Vue3 + Vite 中使用 Lodash-es 的防抖 debounce 详解
  • 机器学习基础相关问题
  • 验证负载均衡与弹性伸缩
  • Three.js中AR实现详解并详细介绍基于图像标记模式AR生成的详细步骤
  • CSS高级技巧及新增属性