arcgis学习笔记
arcgis的概念
arcgis的应用场景
arcgis的发展历史
arcgis的cc工具箱
arcgis操作四十四个技巧
arcigspro中的动态文本技巧
ARCgis的图斑对比操作实操
arcgis如何汇总统计
arcgis如何布满布局操作
arcgis如何在dem栅格中提取水文线
arcgispro中如何创建空图层-最快办法
arcgismap过渡到PRO的操作细节
arcgisPRO如何画建筑阴影
arcgis的模型构建器-减轻重复劳动利器
如果在ArcGIS Pro的地图系列中插入动态统计表
arcgis土地利用转移矩阵
ArcGIS中的【OBJECTID_1】字段是什么鬼?如何还原成【OBJECTID】
arcgis四十个操作技巧-提高工作效率
ArcGIS 批量导出 MXD 地图,高效不加班
arcgis获取四至坐标
ArcGIS 强行修改字段类型工具
在ArcGIS中生成界址点的方法——基于arcpy脚本的实践指南
【ArcGIS 小技巧】为国空用地字段设置属性域,快速填充属性值并减少出错
arcgis导出csv格式
arcgis小技巧
数据分享2024年5月全国行政区划
arcgis计算子段的表达式
ArcGIS_空间连接_工具详解
ArcMap的那些功能在ArcGIS Pro里都去哪儿了?
【平面面积、椭球面积】计算方法全收录
解锁 ArcGIS 字段计算器!
ArcGIS【汇总统计】方法详解
解决你的所有 ArcGIS 标注问题:二分式、三分式、上下标、牵引线……
ArcGIS 模型构建器(ModelBuilder)_知识要点汇总
一篇文章学会 ArcGIS 模型构建器(ModelBuilder)
ArcGIS 筛选工具:19 段 SQL 代码,所有需求一网打尽
ArcGIS 模型构建器 Pro 版_更多花活演示
ArcGIS Pro 属性规则:数据自动化神器
【模型构建器高级技巧】迭代要素选择实现带属性的线面转换
【超级干货】26 段 python 代码,解锁 ArcGIS 字段计算器!
一文搞定 ArcGIS Pro 布局中的动态文本
本文档使用 MrDoc 发布
-
+
首页
ArcGIS 强行修改字段类型工具
实现逻辑 我们将使用 ArcPy(ArcGIS 的 Python 模块)来完成以下步骤: **添加临时字段:** 根据目标字段名创建一个临时字段,确保不会超出字段名长度限制。 **计算临时字段值:** 将原始字段的值计算并赋值到临时字段。 **删除原始字段:** 删除原始字段。 **重新添加原始字段:** 使用新的字段类型重新添加原始字段。 **计算新字段值:** 将临时字段的值计算并赋值到新的字段。 **删除临时字段:** 删除临时字段。 ``` # -*- coding: utf-8 -*- import arcpy import sys def modify_field_type(feature_class, fields, new_type, suffix="_tmp"): arcpy.env.overwriteOutput = True max_field_length = 10 for field in fields: field = field.strip().decode('utf-8') field_desc = arcpy.Describe(feature_class).fields src_type = [f.type for f in field_desc if f.name == field][0] if len(field) + len(suffix) > max_field_length: tmp_field = field[:max_field_length - len(suffix)] + suffix else: tmp_field = field + suffix arcpy.AddField_management(feature_class, tmp_field, new_type) arcpy.CalculateField_management(feature_class, tmp_field, "!{}!".format(field), "PYTHON_9.3") arcpy.DeleteField_management(feature_class, field) arcpy.AddField_management(feature_class, field, new_type) arcpy.CalculateField_management(feature_class, field, "!{}!".format(tmp_field), "PYTHON_9.3") arcpy.DeleteField_management(feature_class, tmp_field) if __name__ == "__main__": reload(sys) sys.setdefaultencoding('utf-8') feature_class = arcpy.GetParameterAsText(0).decode('utf-8') fields_to_modify = arcpy.GetParameterAsText(1).decode('utf-8').split(";") new_field_type = arcpy.GetParameterAsText(2).decode('utf-8') modify_field_type(feature_class, fields_to_modify, new_field_type) ```  **创建脚本工具** ### **1. 创建工具箱** 首先,在 ArcGIS Catalog 窗口中,右键点击你的工具箱,选择“新建” -> “工具箱”,创建一个新的工具箱。例如,命名为“FieldTypeModification.tbx”。 ### **2. 添加脚本工具** 在创建的工具箱中,右键点击工具箱,选择“添加” -> “脚本”,填写工具名称和标签(例如,名称:ModifyFieldType,标签:强行修改字段类型),然后点击下一步。 ### **3. 配置脚本工具** 填写脚本文件的位置(例如,保存为 modify_field_type.py),然后点击下一步。在“参数”页面,添加以下参数: ``` **输入要素类(Feature Class)** 名称: 输入要素类 数据类型: 要素类 参数类型: 必须 多值: 否 **字段名称(Field Names)** 名称: 字段名称 数据类型: 字段 参数类型: 必须 多值: 是(选择多个字段) **新的字段类型(New Field Type)** 名称: 新的字段类型 数据类型: 字符串 参数类型: 必须 多值: 否 ``` **点击完成,工具就添加好了。** 编写脚本代码:新建一个 txt 文件把代码粘贴进去,然后将后缀修改为 py,将做好的 py 文件导入到脚本工具中。  **注意事项** 字段名长度限制:为了确保字段名不超过长度限制,我们对临时字段名进行了截断处理。如果原字段名加上后缀后超过最大长度限制,会截断部分原字段名。 编码问题:脚本中处理了 Unicode 编码问题,确保字段名中包含中文字符时不会出错。  结语 通过这种方法,我们可以在 ArcGIS 中灵活地修改字段类型,解决了 ArcGIS 直接不支持修改字段类型的限制。希望这篇文章对你有所帮助!如果你觉得这篇文章有用,请点赞、分享给朋友,或者在评论区留下你的问题和建议,我们会及时回复。如果需要做好的工具箱在公众号后台回复“修改字段”获取工具。同时,欢迎关注我们的微信公众号,获取更多关于地理信息系统(GIS)和数据处理的实用技巧和教程!
睡觉的骆驼
2024年8月6日 20:32
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码