首页 > 解决方案 > 我可以以更简单、更流畅的方式完成此任务吗?(在 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]

感谢您的帮助,只是想了解更多

标签: pythonarcpyarcmap

解决方案


我实际上并没有运行这些,所以我的语法可能有点不对劲,但是你需要想出一个 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")

推荐阅读