python - 我可以以更简单、更流畅的方式完成此任务吗?(在 ArcPy 中)
问题描述
对于一个项目,我正在添加字段,然后使用表中已包含的数据填充这些字段。添加字段很容易。
arcpy.AddField_management("PLSSFirstDivision","TRS","TEXT","","",20)
arcpy.AddField_management("PLSSFirstDivision","TWN","TEXT","","",20)
arcpy.AddField_management("PLSSFirstDivision","SEC","TEXT","","",20)
arcpy.AddField_management("PLSSFirstDivision","RNG","TEXT","","",20)
arcpy.AddField_management("PLSSFirstDivision","TWN_D","TEXT","","",20)
arcpy.AddField_management("PLSSFirstDivision","RNG_D","TEXT","","",20)
然后我需要从一个字段(字符串)中获取特定的数字,我只能让它在 ArcMaps 计算器而不是 Python 窗口中工作。数据看起来像这样:(需要粗体)
LA180 23 0N0 12 0E0SN 10 0
TWN = MID([FRSTDIVID],6,2)
RNG = MID([FRSTDIVID],11,2)
SEC = MID([FRSTDIVID],18,2)
然后我需要去除这 3 个字段的初始“0”:
TWN = !TWN!.lstrip('0')
RNG = !RNG!.lstrip('0')
SEC = !SEC!.lstrip('0')
比在最后一个字段中添加它们:
TRS = "T"+ [TWN]+ [TWN_D]+"R" + [RNG]+ [RNG_D]+"-" + "SEC" + [SEC]
感谢您的帮助,只是想了解更多
解决方案
我实际上并没有运行这些,所以我的语法可能有点不对劲,但是你需要想出一个 python 表达式来产生你想要的字符串,然后使用 arcpy 的 CalculateField 方法来更新你的表。如果您在字段计算器窗口中测试您的表达式,您应该能够将您的最终表达式复制/粘贴到如下语句中。
arcpy.CalculateField_management("PLSSFirstDivision", "TWN", "!FRSTDIVID![6:2].lstrip('0')", "PYTHON3")
arcpy.CalculateField_management("PLSSFirstDivision", "TRS", "'T' + !TWN!+ !TWN_D!+'R' + !RNG!+ !RNG_D!+'-SEC' + !SEC!", "PYTHON3")
推荐阅读
- sqlite - 为什么我的 SQLite 查询使用“小于或等于”不返回“等于”部分,而只返回“小于”部分?
- c++ - 堆栈中的 pop() 没有删除任何元素
- wait - Jython wait() 不等待?
- windows - 如何在 Mac 上安装所有相同版本的 Windows 工作环境?(反应原生)
- webpack - Shopware 6:模块解析失败:运行 `./psh.phar storefront:dev` 后出现意外令牌
- html-email - 为电子邮件创建进度条
- google-maps - 由于 polyfills.js,谷歌地图兼容性 IE11 无法正常工作
- ffmpeg - “输出流 0:0 中的非单调 DTS 这可能会导致输出文件中的时间戳不正确。” 错误
- r - 如何使用变量名对数据框进行排序
- json - 如何在 Sabre Bargain Finder Max REST API 中过滤我对某个客舱等级的请求?