arcgis中字段计算器使用python-ArcGIS 字段计算器 Python 坑

最近要处理个简单数据,一个字段中为文本类型,包含各种描述。要求是包含平方米的数值提取出来,变成数值,如果包含多个,则把各个值累加起来。

比如 字段值为 “非法占用100平方米” 处理后结果为 100

字段值为 “工棚3间” 处理结果为0

字段值为 “工棚3间,瓦屋2间,非法占用100平方米” 处理结果100

字段值为 “工棚100平方米,瓦屋100平方米” 处理结果为200

由于一直写.net,上述功能在.net中做起来并不麻烦。但是觉得应该是字段计算器写写就解决的问题,懒得在用.net搭。就尝试了一下ArcGIS中的Python字段计算器

四五年前学过一点python,虽然现在啥都不记得了

搜索了一些arcgis字段计算器的资料,大体瞄了一眼代码,就开始写。amazing Python

(1)python是用代码缩进表示C#中{}啊,字段计算器中的编辑页面就是个txt,啥功能也没有啊,自己一边写逻辑,一边改缩进。而且网上复制粘贴的代码,很容易缩进就乱掉了

(2)python中,定义函数名之后有个 “:”, if条件之后也有个 “:”,而且ArcMap的字段计算器不能调试

(3)神奇的 unicode decode error: "ascii" codesc can"t decode 0xe5 in position 异常,检索了半天资料,后来发现,是编码的问题。不知道什么原因,按错误描述,应该是ArcMap字段计算器读取的值是 ascii,而我要判断的值是 中文,就出了这个 错误,可我字段中的值明明是中文啊。该错误对新手很不友好啊

虽然上述功能没有完全实现,也不想实现了,下面记录一下这段神奇的代码

def fuxkPython(ss):

flag="平方米"

result=-1

tp=ss.encode("utf-8");

# tp =ss

id=tp.find(flag)

if(id>=0):

jq=tp[0:id]

if jq.isdigit():

result= float(jq)

return result

amazing

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值